存在的问题:

1.函数musiclujing()中没有对输入的路径进行判断,如果输入的路径不存在或者不是文件夹,则会出现错误。

2.函数musicselect()中,当输入的序号超出歌曲列表范围时,程序会出现错误。

3.函数musicselect()中,当调整音量到最大或最小值时,会出现音量超出0-1的范围的错误。

4.函数musicselect()中,当输入无效指令时,程序没有给出清晰的提示信息,容易使用户迷失。

优化后的代码如下:

import pygame
import os

pygame.mixer.init()

def musiclujing():
    while True:
        musicfolderpath = input("请输入音乐文件夹目录:")
        if os.path.exists(musicfolderpath) and os.path.isdir(musicfolderpath):
            break
        else:
            print("输入的路径不存在或者不是文件夹,请重新输入!")
    path = []
    name = []
    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)
                if n < 0 or n >= len(path):
                    print("输入的序号超出范围,请重新输入!")
                    continue
                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)

优化后的代码解决了输入路径错误和序号超出列表范围的问题,并且增加了对音量大小的限制和对输入无效指令的提示

请检查代码错误并修正然后优化代码。Pythonimport pygameimport ospygamemixerinitdef musiclujing path = name = musicfolderpath = input请输入音乐文件夹目录: files = oslistdirmusicfolderpath for file in files

原文地址: https://www.cveoy.top/t/topic/gt2R 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录