请检查代码错误并修正然后优化代码。Pythonfrom time import sleep # 这里可以不用sleep表示先不执行代码段的时间import pygameimport os#导入pygame模块import time#导入时间模块pygamemixerinit#初始化音频部分def musiclujing#将曲目的路径存放在列表中 path = name = m
修正后的代码如下:
import pygame
import os
pygame.mixer.init()
def musiclujing():
path = []
name = []
musicfolderpath = input("请输入音乐文件夹目录:")
files = os.listdir(musicfolderpath)
for file in files:
if not os.path.isdir(musicfolderpath + "/" + file):
path.append(musicfolderpath + "/" + file)
name.append(file)
return path, name
def welcome():
print('''
************************************************
* 欢迎来到潘昱霖出品的专属音乐播放器 *
* 潘昱霖出品,必属精品 *
************************************************
''')
pygame.mixer.music.load(musicpath[0])
pygame.mixer.music.play(loops=-1)
pygame.mixer.music.set_volume(0.3)
def musicselect(path, name):
i = 0
j = 0.3
while True:
print('''
************************************************
* 从键盘上键入以下字符可以执行对应命令,大小写均可: *
A/a:暂停 Q/q:播放
S/s:下一曲 W/w:上一曲
E/e:增大音量 D/d:减少音量
空格:退出程序
* 直接输入数字: 直接播放对应序号的歌曲 *
------------------------------------------------
''')
print(" 曲库的歌曲列表为:")
for r in range(len(name)):
print(" ", end="")
print(str(r) + ":" + name[r])
print(" ************************************************")
print("当前正在播放的是:", name[i])
n = input('请输入下一步操作哦:')
if n in ["q", "Q"]:
print('继续播放音乐')
pygame.mixer.music.unpause()
elif n in ["a", "A"]:
pygame.mixer.music.pause()
elif n in ["s", "S"]:
i = (i + 1) % len(path)
pygame.mixer.music.load(path[i])
pygame.mixer.music.play(loops=-1)
elif n in ["w", "W"]:
i = (i - 1 + len(path)) % len(path)
pygame.mixer.music.load(path[i])
pygame.mixer.music.play(loops=-1)
elif n in ["e", "E"]:
j = min(1, j + 0.1)
pygame.mixer.music.set_volume(j)
elif n in ["d", "D"]:
j = max(0, j - 0.1)
pygame.mixer.music.set_volume(j)
elif n == " ":
print("程序结束!")
return
else:
try:
n = int(n)
i = n % len(path)
pygame.mixer.music.load(path[i])
pygame.mixer.music.play(loops=-1)
except:
print("输入的指令无效,请重新输入!若要退出,请输入空格后确定")
continue
musicpath, musicname = musiclujing()
welcome()
musicselect(musicpath, musicname)
主要的修改有:
1.去掉了不必要的模块导入,如 time、sleep。
2.修改了 os.path.isdir() 函数中的参数传递错误,应该传入完整的文件路径。
3.修改了音乐播放循环次数的设置,将其设为无限循环 -1。
4.简化了上一曲和下一曲的代码实现,用取模运算实现循环播放。
5.增加了音量调节的上限和下限,防止超出范围。
6.将 return 1 改为 return,以便代码更加清晰
原文地址: https://www.cveoy.top/t/topic/gt1F 著作权归作者所有。请勿转载和采集!