Make a cool music player with Python [V3.0 including source code and packaged exe]

Dragon junior 2021-10-29 15:21:09
make cool music player python

Preface

Familiar friends know , I wrote an article about music player some time ago –Python Make a cool music player . A lot of little friends wrote to me , Some suggestions for improving the player , Some logic for the player bug Optimize and perfect . Today's music player 3.0 Version complete , Let's see how to use python Make a cool music player ~

Because I've already introduced the music player V1.0 The general function of the version , If you don't know a little partner, you can first take a look at the general introduction of the previous version of the music player .【python Make a cool music player , Search whatever you want !】 Now let's introduce the music player V3.0 Some new functions and production process of the version .

Skip directly to the end of the text Get source code and exe packaged applications .

One 、 Core function design

Before V1.0 Version of the player , Mainly completed the design of the general interface of the player , It mainly includes the search page 、 Play record two sub pages , Simple layout of the player screen ; Secondly, the main core function of the player automatically crawls music according to the entered search music keywords and can play music . It also realizes several common auxiliary functions of music player , For example, switching of playback mode ; Music plays the current song 、 On a 、 The following piece ; Music playback paused and started ; Music volume control, etc .

V3.0 In the version , We have mainly improved the following core functions :

  • Improve the layout of the player , Add sub list page – Favorite songs 、 Local song page , Delete sub list page – Lyrics page , Add song details sub interface , Add player background transparency and pictures
  • Improve the local function of downloading and saving music 、 Perfect your favorite songs
  • Improve the music playing process ,QListwidge Click and play module , Double click to play the previous song and the next

Two 、 Implementation steps

1. Interface layout

V1.0 In the player version , We have made a preliminary design for the typesetting . The whole thing is divided into 4 area , Head area 、 The left area of the middle body 、 The right area of the middle body 、 Bottom area . The head area mainly includes keyword music search and music route source switching , And form minimization , Maximize , Turn off the function ; The middle body consists of left and right sides , The left side is used to display the cover picture of playing music , The right side is used to display the search music list ; The bottom mainly displays the currently playing music , Play progress bar , Volume control , On a / The following piece , Pause / Start , Additional functions such as playback mode .

V3.0 In the player version , We will add a new favorite song sub page 、 Add the local song sub page to the right area of the middle body , Superimposed on the music search list page . Make the background of the player transparent , And add background pictures . Here we use the original pyqt5, The core design code is as follows :

# author:Dragon juvenile 
class Ui_MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.RowLength = 0
t1 = Thread(target=self.action)
t1.setDaemon(True)
t1.start()
self.start()
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1023, 758)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.label_1 = QtWidgets.QLabel(self.centralwidget)
self.label_1.setGeometry(QtCore.QRect(0, 50, 1024, 601))
self.label_1.setText("")
self.label_1.setObjectName("label")
try:
pix_img = QPixmap(str('1.jpg'))
pix = pix_img.scaled(1024, 700, Qt.KeepAspectRatio)
self.label_1.setPixmap(pix)
except:
pass
self.widget_left = QtWidgets.QWidget(self.centralwidget)
self.widget_left.setGeometry(QtCore.QRect(0, 60, 243, 591))
self.label_smallpic = MyQLabel(self.widget_left)
self.label_smallpic.setGeometry(QtCore.QRect(22, 180, 200, 200))
self.label_smallpic.setText("")
self.label_smallpic.setObjectName("label_smallpic")
self.label_smallpic.connect_customized_slot(self.show)
pix_img = QPixmap(str(data + '/backdown.png'))
pix = pix_img.scaled(200, 200, Qt.KeepAspectRatio)
self.label_smallpic.setPixmap(pix)
self.label_pagenum = QtWidgets.QLabel(self.widget_left)
self.label_pagenum.setGeometry(QtCore.QRect(22, 500, 210, 16))
self.label_pagenum.setObjectName("label_pagenum")
self.shuru2 = QtWidgets.QLineEdit(self.widget_left)
self.shuru2.setText('5')
self.shuru2.setGeometry(QtCore.QRect(77, 80, 78, 20))
self.shuru2.setObjectName("shuru2")
self.label_5 = QtWidgets.QLabel(self.widget_left)
self.label_5.setGeometry(QtCore.QRect(11, 80, 54, 21))
self.label_5.setObjectName("label_5")
self.sure = QtWidgets.QPushButton(self.widget_left)
self.sure.setGeometry(QtCore.QRect(165, 80, 67, 23))
self.sure.setObjectName("sure")
self.sure.clicked.connect(self.page)
self.sure.setStyleSheet(
'''QPushButton{background:#3C3F41;border-radius:5px;}QPushButton:hover{background:#F2BCAE;}''')
self.widget_down = QtWidgets.QWidget(self.centralwidget)
self.widget_down.setGeometry(QtCore.QRect(0, 650, 1024, 81))
self.widget_down.setObjectName("widget_down")
self.horizontalSlider = QtWidgets.QSlider(self.widget_down)
self.horizontalSlider.setGeometry(QtCore.QRect(330, 52, 375, 20))
self.horizontalSlider.setOrientation(QtCore.Qt.Horizontal)
self.horizontalSlider.setObjectName("horizontalSlider")
self.widget_control = QtWidgets.QWidget(self.widget_down)
self.widget_control.setGeometry(QtCore.QRect(264, 0, 485, 51))
self.widget_control.setObjectName("widget_control")
self.label3 = QtWidgets.QLabel(self.widget_down)
self.label3.setGeometry(QtCore.QRect(803, 30, 111, 21))
self.label3.setObjectName("label_3")
self.right_playconsole_layout = QGridLayout() # Playback control part grid layout layer 
self.widget_control.setLayout(self.right_playconsole_layout)
self.console_button_3.setIconSize(QSize(30, 30))
self.right_playconsole_layout.addWidget(self.console_button_4, 0, 0)
self.right_playconsole_layout.addWidget(self.console_button_1, 0, 1)
self.right_playconsole_layout.addWidget(self.console_button_3, 0, 2)
self.right_playconsole_layout.addWidget(self.console_button_2, 0, 3)
self.right_playconsole_layout.addWidget(self.console_button_5, 0, 4)
self.right_playconsole_layout.addWidget(self.console_button_6, 0, 5)
self.right_playconsole_layout.setAlignment(Qt.AlignCenter) # Set the layout internals to center 
self.widget_control.setStyleSheet(''' QPushButton{ border:none; } ''')
self.widget_right = QtWidgets.QWidget(self.centralwidget)
self.widget_right.setGeometry(QtCore.QRect(242, 50, 782, 601))
self.widget_right.setObjectName("widget_right")
self.right_layout = QGridLayout()
self.widget_right.setLayout(self.right_layout) # Set the right part layout to grid 
self.tabWidget = QTabWidget(self)
self.tabWidget.setGeometry(QtCore.QRect(242, 50, 782, 610))
op = QGraphicsOpacityEffect()
op.setOpacity(0.9)
self.tab = QWidget()
self.tab.setObjectName("tab")
self.tab_layout = QGridLayout()
self.tab.setLayout(self.tab_layout)
self.listwidget = QListWidget(self.tab)
self.tab.setWindowOpacity(0.8)
self.label361 = QLabel(self)
self.label361.setText("")
self.label361.setStyleSheet("color:#6DDF6D")
self.tab_layout.addWidget(self.label361, 0, 1, 1, 1)
self.button_1235 = QPushButton(icon('fa.download', color='#D0D0D0', font=24), " Download all ")
self.button_1235.clicked.connect(self.downloadalls)
self.button_1235.setStyleSheet(
'''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')
self.tab_layout.addWidget(self.button_1235, 0, 2, 1, 1)
self.button_1236 = QPushButton(icon('fa.trash-o', color='#D0D0D0', font=24), " clear list ")
self.button_1236.clicked.connect(self.dell)
self.button_1236.setStyleSheet(
'''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')
self.tab_layout.addWidget(self.button_1236, 0, 3, 1, 1)
self.listwidget.doubleClicked.connect(lambda: self.change_func(self.listwidget))
self.listwidget.setContextMenuPolicy(Qt.CustomContextMenu)
self.listwidget.customContextMenuRequested[QPoint].connect(self.myListWidgetContext)
self.listwidget.setStyleSheet('''QListWidget{color:black}''')
self.listwidget.setObjectName("listWidget")
#self.tab.setStyleSheet('''QWidget{background:transparent};QListWidget{color:black}''')
self.tab_layout.addWidget(self.listwidget, 1, 0, 1, 4)
self.tabWidget.addTab(self.tab, " Search page ")
self.tab2 = QWidget()
self.tab2.setObjectName("tab")
self.tab2_layout = QGridLayout()
self.tab2.setLayout(self.tab2_layout)
self.listwidget2 = QListWidget(self.tab2)
self.listwidget2.doubleClicked.connect(lambda: self.change_funcse(self.listwidget2))
self.listwidget2.setContextMenuPolicy(Qt.CustomContextMenu)
self.listwidget2.customContextMenuRequested[QPoint].connect(self.myListWidgetContext2)
self.listwidget2.setObjectName("listWidget2")
self.listwidget2.setContextMenuPolicy(3)
self.tab2_layout.addWidget(self.listwidget2, 0, 0, 1, 1)
self.tabWidget.addTab(self.tab2, " It's playing recently ")
self.tab3 = QWidget()
self.tab3.setObjectName("tab")
self.tab3_layout = QGridLayout()
self.tab3.setLayout(self.tab3_layout)
self.label223 = QLabel(self)
# self.label5.setScaledContents(True)
pix_img = QPixmap(str(data + '/backdown.png'))
pix = pix_img.scaled(100, 100, Qt.KeepAspectRatio)
self.label223.setPixmap(pix)
# self.label5.setMaximumSize(1,1)
self.tab3_layout.addWidget(self.label223, 0, 0, 1, 1)
self.button_1237 = QPushButton(icon('fa.play', color='#FFFFFF', font=24), " Play all ")
self.button_1237.clicked.connect(self.allplaylove)
self.button_1237.setStyleSheet(
'''QPushButton{background:#EC4141;border-radius:5px;}QPushButton:hover{background:#E92121;}''')
self.tab3_layout.addWidget(self.button_1237, 0, 1, 1, 1)
self.button_1235 = QPushButton(icon('fa.download', color='#D0D0D0', font=24), " Download all ")
self.button_1235.clicked.connect(self.downloadalllove)
self.button_1235.setStyleSheet(
'''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')
self.tab3_layout.addWidget(self.button_1235, 0, 2, 1, 1)
self.button_1236 = QPushButton(icon('fa.trash-o', color='#D0D0D0', font=24), " clear list ")
self.button_1236.clicked.connect(self.delove)
self.button_1236.setStyleSheet(
'''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')
self.tab3_layout.addWidget(self.button_1236, 0, 3, 1, 1)
self.listwidget3 = QListWidget(self.tab3)
self.listwidget3.doubleClicked.connect(lambda: self.change_funclove(self.listwidget3))
self.listwidget3.setContextMenuPolicy(Qt.CustomContextMenu)
self.listwidget3.customContextMenuRequested[QPoint].connect(self.myListWidgetContext3)
self.listwidget3.setObjectName("listWidget3")
self.tab3_layout.addWidget(self.listwidget3, 1, 0, 1, 4)
self.tabWidget.addTab(self.tab3, " Favorite songs ")
self.tab5 = QWidget()
self.tab5.setObjectName("tab5")
self.tab5_layout = QGridLayout()
self.tab5.setLayout(self.tab5_layout)
self.listwidget5 = QListWidget(self.tab5)
self.listwidget5.doubleClicked.connect(lambda: self.change(self.listwidget5))
self.listwidget5.setContextMenuPolicy(Qt.CustomContextMenu)
self.listwidget5.customContextMenuRequested[QPoint].connect(self.myListWidgetContext5)
self.button_12351 = QPushButton(icon('fa.download', color='#D0D0D0', font=24), " Add a directory ")
self.button_12351.clicked.connect(self.add)
self.button_12351.setStyleSheet(
'''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')
self.tab5_layout.addWidget(self.button_12351, 0, 2, 1, 1)
self.button_12361 = QPushButton(icon('fa.trash-o', color='#D0D0D0', font=24), " clear list ")
self.button_12361.clicked.connect(self.dellocal)
self.button_12361.setStyleSheet(
'''QPushButton{background:#222225;border-radius:5px;}QPushButton:hover{background:#303030;}''')
self.tab5_layout.addWidget(self.button_12361, 0, 3, 1, 1)
self.listwidget5.setObjectName("listWidget5")
self.tab5_layout.addWidget(self.listwidget5, 1, 0, 1, 4)
self.tabWidget.addTab(self.tab5, " Local songs ")
self.right_layout.addWidget(self.tabWidget, 3, 0, 100, 100)
self.widget_up = QtWidgets.QWidget(self.centralwidget)
self.widget_up.setGeometry(QtCore.QRect(0, 0, 1024, 51))
self.widget_up.setObjectName("widget_up")
self.shuru = QtWidgets.QLineEdit(self.widget_up)
self.shuru.setGeometry(QtCore.QRect(220, 10, 221, 31))
self.shuru.setObjectName("shuru")
self.shuru.returnPressed.connect(self.correct)
self.pushButton_search = QtWidgets.QPushButton(self.widget_up)
self.pushButton_search.setIcon(icon('fa.search', color='white'))
self.pushButton_search.setGeometry(QtCore.QRect(407, 10, 34, 31))
self.pushButton_search.setObjectName("pushButton_search")
self.pushButton_search.clicked.connect(self.correct)
self.pushButton_search.setStyleSheet(
'QPushButton{color:white;border-radius:5px;}QPushButton:hover{background:green;}')
self.cb = QtWidgets.QComboBox(self.widget_up)
self.cb.setGeometry(QtCore.QRect(594, 10, 122, 31))
self.cb.setObjectName("comboBox")
# self.up_layout.addWidget(self.cb, 0, 180, 1, 30)
self.cb.currentIndexChanged[int].connect(self.print)
self.widget = QtWidgets.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(0, 50, 1024, 601))
font = QtGui.QFont()
font.setFamily("Microsoft Himalaya")
self.widget.setFont(font)
self.widget.setObjectName("widget")
self.label_picbig = MyQLabel(self.widget)
self.label_picbig.setGeometry(QtCore.QRect(55, 160, 300, 300))
self.label_picbig.setText("")
self.label_picbig.setObjectName("label_picbig")
self.label_picbig.connect_customized_slot(self.show)
pix_img = QPixmap(str(data + '/backdown.png'))
pix = pix_img.scaled(300, 300, Qt.KeepAspectRatio)
self.label_picbig.setPixmap(pix)
self.label_showname = QtWidgets.QLabel(self.widget)
self.label_showname.setGeometry(QtCore.QRect(440, 10, 1000, 41))
font = QtGui.QFont()
font.setFamily(" Juvenility ")
font.setPointSize(28)
self.label_showname.setFont(font)
self.label_showname.setObjectName("label_showname")
self.label_showsinger = QtWidgets.QLabel(self.widget)
self.label_showsinger.setGeometry(QtCore.QRect(462, 70, 1000, 30))
font = QtGui.QFont()
font.setFamily(" Juvenility ")
font.setPointSize(20)
self.label_showsinger.setFont(font)
self.label_showsinger.setObjectName("label_showsinger")
self.listwidget_lrc = QtWidgets.QListWidget(self.widget)
self.listwidget_lrc.setGeometry(QtCore.QRect(396, 110, 422, 461))
self.left_close = QPushButton("") # close button 
self.left_close.clicked.connect(MainWindow.close)
self.left_visit = QPushButton("") # Blank button 
self.left_visit.clicked.connect(MainWindow.big)
self.left_mini = QPushButton("") # Minimize button 
self.left_mini.clicked.connect(MainWindow.mini)
self.close_layout.addWidget(self.left_mini, 0, 0, 1, 1)
self.close_layout.addWidget(self.left_close, 0, 2, 1, 1)
self.close_layout.addWidget(self.left_visit, 0, 1, 1, 1)
self.left_close.setFixedSize(15, 15) # Set the size of the close button 
self.left_visit.setFixedSize(15, 15) # Set the button size 
self.left_mini.setFixedSize(15, 15) # Set the minimize button size 
MainWindow.setWindowOpacity(0.95) # Set window transparency 
MainWindow.setAttribute(Qt.WA_TranslucentBackground)
MainWindow.setWindowFlag(Qt.FramelessWindowHint) # Hide borders 
def labelc(self):
self.setCursor(QCursor(Qt.ArrowCursor))
print('surprise')
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.label_pagenum.setText(_translate("MainWindow", " Currently playing in sequence "))
self.label_5.setText(_translate("MainWindow", " Number of pages loaded "))
self.sure.setText(_translate("MainWindow", " determine "))
self.label_leftnum.setText(_translate("MainWindow", "00:00:00"))
self.label_2.setText(_translate("MainWindow", "00:00:00"))
self.label_name.setText(_translate("MainWindow", " I haven't played a song yet ╰(*°▽°*)╯"))
self.label_singer.setText(_translate("MainWindow", "(*/ω\*)"))
self.pushButton_search.setText(_translate("MainWindow", ""))
self.label_showname.setText(_translate("MainWindow", " Make :oys,Dragon juvenile "))
self.label_showsinger.setText(_translate("MainWindow", " Extension :dragon juvenile ,csdn:Dragon juvenile "))

The interface layout design is as follows :
 Insert picture description here

2. Download and save music

According to the previous version of the player , Enter the keywords and select the music source Crawl the music list and display the crawled music data list on the search page , Double click a song in the list page , Music playing function can be realized .

V3.0 In the player version , We added and optimized the local download of currently playing music 、 Search page music list one click download 、 List of favorite songs, one click download 、 Add my favorite song features .

Download Music :

We can download the currently playing music 、 Search page music list one click download 、 One click download of favorite songs . As shown in the figure below :
 Insert picture description here

# author:Dragon juvenile 
# Currently playing music download 
def down(self):
if bo == 'local':
downpath = str(filew)
downpath = downpath.replace('/', '\\')
downpath = downpath + SongName[num]
call('explorer /select,{}'.format(downpath))
else:
call('explorer /select,{}'.format(to))
# Download all music 
def downloadall(self, typer):
try:
global typerr
typerr = typer
print(typer)
print(typerr)
self.work = downall()
self.work.start()
self.work.trigger.connect(self.disdownall)
except:
print(' Default picture download error ')
pass
# Download all the music in the search page list 
def downloadalls(self):
self.downloadall('boing')
# Download your favorite song list and all your music 
def downloadalllove(self):
self.downloadall('love')

Add favorite songs :

Add favorite songs , We can use the logo of the currently playing music , You can also right-click the music list to add your favorite songs .
 Insert picture description here

# author:Dragon juvenile 
# By clicking on the logo , Add favorite songs to the currently playing music 
def lovesong(self):
if bo == 'boing' or bo == 'boed':
try:
if bo == 'boing':
loves.append(songs[num])
loveurls.append(urls[num])
lovepics.append(pic[num])
lovelrc.append(lrcs[num])
elif bo == 'boed':
loves.append(songed[num])
loveurls.append(urled[num])
lovepics.append(picd[num])
lovelrc.append(lrcd[num])
else:
pass
except:
pass
self.work = firstThread()
self.work.start()
self.work.trigger.connect(self.dispng)
r = 0
self.listwidget3.clear()
for i in loves:
self.listwidget3.addItem(i)
self.listwidget3.item(r).setForeground(Qt.white)
r = r + 1
print(loves)
else:
pass
# Right click the music list to add favorite songs 
def addItem(self):
try:
if list_confident == 'boing':
loves.append(songs[num_m])
loveurls.append(urls[num_m])
lovepics.append(pic[num_m])
lovelrc.append(lrcs[num_m])
else:
loves.append(songed[num_m])
loveurls.append(urled[num_m])
lovepics.append(picd[num_m])
lovelrc.append(lrcd[num_m])
self.work = firstThread()
self.work.start()
self.work.trigger.connect(self.dispng)
except:
pass
r = 0
self.listwidget3.clear()
for i in loves:
self.listwidget3.addItem(i)
self.listwidget3.item(r).setForeground(Qt.white)
r = r + 1

The effect is as follows :
 Insert picture description here

3. Music playing process

QListwidge Click and play :

Next we need to improve QListwidge Click and play module , By double clicking on the songs in the list , Create a playback thread to play music .
Core code :

# author:Dragon juvenile 
# Music List play 
def bofang(self, num):
try:
downloading = True
self.console_button_3.setIcon(qtawesome.icon('fa.pause', color='#F76677', font=18))
pause = False
try:
pygame.mixer.stop()
except:
pass
pygame.mixer.init()
try:
self.Timer = QTimer()
self.Timer.start(500)
except:
pass
try:
self.label.setText(' In the download ')# Call the first multi thread to download songs 
self.work = WorkThread()
self.work.start()
self.work.trigger.connect(self.display)
except:
print ('song download error')
downloading = False
pass
except:
time.sleep(0.1)
print ('system error')
pass
# Used to receive the returned signal 
def display(self,sd):
if sd == 'finish':
self.label.setText(songs[num])
print ('music\{}.mp3'.format(number))
pygame.mixer.music.load('music\{}.mp3'.format(number)) # Load music 
pygame.mixer.music.play()
# Play music 
else:
self.label.setText(' Download error ')

Double click play , Previous and next :

The following is double-click play, previous song and next song
 Insert picture description here
The core code is as follows :

# author:Dragon juvenile 
#QlistWidget Double click event for 
def change_func(self, listwidget):
global num
item = QListWidgetItem(self.listwidget.currentItem())
print(item.text())
num = int(listwidget.currentRow())
self.label.setText(songs[num])
print(listwidget.currentRow())
self.bofang(num)
# Next button 
def nextion(self):
try:
if play == 'shun':
print('shuning')
self.next()
elif play == 'shui':
print('shuiing')
self.shui()
elif play == 'always':
print('alwaysing')
self.next()
except:
print('no')
pass

Play mode :

Next, we need to improve the playback mode selection and cycle to judge whether to automatically the next song , Because it's judged every second , So use multithreading , Because I didn't consider , This will cause an exception during playback switching bug appear . The core code is as follows :

# author:Dragon juvenile 
''' stay init Loop judgment opening method inside t1 = threading.Thread(target=self.action) t1.setDaemon(True) t1.start() '''
# Select play mode 
def playmode(self):
global play
try:
if play == 'shun':
play = 'shui'
print(' Random broadcast ')
self.label2.setText(" Currently playing randomly ")
try:
self.console_button_6.setIcon(qtawesome.icon('fa.random', color='#3FC89C', font=18))
print('done')
except:
print('none')
pass
elif play == 'shui':
play = 'always'
print(' Single tune circulation ')
self.label2.setText(" Currently single loop ")
try:
self.console_button_6.setIcon(qtawesome.icon('fa.retweet', color='#3FC89C', font=18))
print('done')
except:
print('none')
elif play == 'always':
play = 'shun'
print(' Order of play ')
self.label2.setText(" Currently playing in sequence ")
try:
self.console_button_6.setIcon(qtawesome.icon('fa.align-center', color='#3FC89C', font=18))
print('done')
except:
print('none')
except:
print('error')
pass
# Circular judgement 
def action(self):
a = 1
global num
while a < 2:
try:
time.sleep(1)
if not pygame.mixer.music.get_busy() and pause == False and not downloading:
if play == 'shun':
print('shuning')
self.next()
elif play == 'shui':
print('shuiing')
self.shui()
elif play == 'always':
print('alwaysing')
self.always()
except:
print('no')
pass
else:
pygame.mixer.music.stop()

 Insert picture description here

Source code and packaging exe Uploaded , Pay attention to the reply of the official account at the end of the article 【python player 3】 You can get the complete source code

Python Past highlights :

版权声明
本文为[Dragon junior]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/10/20211014052909214k.html

  1. Python題,我剛學,還不會
  2. Je viens d'apprendre, pas encore.
  3. 云计算开发:Python3-find()方法详解
  4. Real time access to stock data, free—— Python crawler Sina stock actual combat
  5. Développement de l'informatique en nuage: détails de la méthode Python 3 - find ()
  6. 如何使用Python进行超参调参和调优
  7. 如何使用Python進行超參調參和調優
  8. Comment utiliser Python pour le réglage hyperparamétrique
  9. Première connaissance du module urllib Python
  10. Python入门:看了这篇文章如果1个小时没法入门Python,那么还是换个语言吧!!
  11. Python(day1):Python 3 教程
  12. Python(day3):Python3 安装与环境搭建
  13. Python (day3): installation et environnement Python 3
  14. Python (day1): tutoriel Python 3
  15. Démarrer avec Python: Si vous ne pouvez pas commencer avec Python en une heure, changez de langue!!
  16. Pandas:DataFrame对象的基础操作
  17. 关于#python#的问题:月球上物体的体重在地球上的16.5%,编写程序输出未来10年在地球上和月球上的体重状况
  18. 反转一个3位整数(Python 实现)
  19. Inverse un entier de 3 bits (implémentation Python)
  20. Questions sur # Python #: les objets lunaires pèsent 16,5% de la masse de la terre et un programme est programmé pour produire la masse de la terre et de la lune au cours des 10 prochaines années
  21. Compared with Excel, it is easy to learn Python report automation practice!
  22. 7 excellent open source libraries for learning Python Programming
  23. Use of Python pandas!!!!! Explain in detail
  24. Python Qt GUI设计:QPrinter打印图片类(基础篇—21)
  25. Use of Python pandas!!!!! Explain in detail
  26. 2n行输入,Python,判断字母个数
  27. Notes de Python (XV): dérivation de liste
  28. Notes sur Python (XVI): générateur et Itérateur
  29. Notes de Python (18): décorateur
  30. 2n entrée de ligne, Python, nombre de lettres de jugement
  31. Notes Python (17): fermetures
  32. Notes sur Python (20): fonctions d'ordre supérieur intégrées
  33. 想问问这个Python编程咋做呀?
  34. 想問問這個Python編程咋做呀?
  35. Vous voulez savoir ce que fait cette programmation python?
  36. 11.5K Star,一个开源的 Python 静态类型检查库
  37. Sweetviz:让你只需三行代码实现Python探索性数据分析
  38. Sweetviz:讓你只需三行代碼實現Python探索性數據分析
  39. Sweetviz: vous permet d'effectuer une analyse exploratoire des données python avec seulement trois lignes de code
  40. 11.5k Star, une bibliothèque de vérification de type statique Python Open Source
  41. 刚学Python,想让大大给我解释一下代码
  42. 剛學Python,想讓大大給我解釋一下代碼
  43. Je viens d'apprendre Python et je veux que tu m'expliques le Code.
  44. Python QT GUI Design: qmainwindow, QWidget and qdialog window classes (Fundamentals - 10)
  45. Python爬虫项目实战:快手网页版滑块captchaSession分析
  46. python计算时间十二小时制
  47. Temps de calcul Python 12 heures
  48. Python crawler Project actual Fighting: faster Web Version Slider CAPTCHA session Analysis
  49. Python要学习多久可以掌握?多久可以精通?
  50. Combien de temps Python va - t - il apprendre à maîtriser? Combien de temps faut - il pour maîtriser?
  51. 从官网上下载的python安装包安装不了
  52. 深度学习项目:如何使用Python和OpenCV进行人脸识别
  53. python编辑语言如内容所示
  54. La langue d'édition Python est affichée dans le contenu
  55. 有谁知道这怎么回事嘛(Python的简单代码)
  56. 有誰知道這怎麼回事嘛(Python的簡單代碼)
  57. Qui sait ce qui se passe?
  58. Python求某个数的因数【因数是指能被这个数整除的数。例如6的因数有:1、2、3、6; 7的因数有:1、7; 8的因数有:1、2、4、8】。
  59. Python calcule les facteurs d'un nombre [les facteurs sont des nombres qui peuvent être divisés par ce nombre. Par exemple, les facteurs de 6 sont: 1, 2, 3, 6; les facteurs de 7 sont: 1, 7; et les facteurs de 8 sont: 1, 2, 4, 8].
  60. 如何创建一个python程序来模拟电影院的座位预订