Python新手求助:实现音乐流派随机选专辑程序遇阻
修正后的音乐专辑选择器代码
先给你把代码改好,同时补上多流派判断和更多专辑示例:
from random import choice # 定义各流派的专辑列表,直接放在全局更适合新手理解 rock_albums = [ 'Dark Side of the Moon - Pink Floyd', 'Led Zeppelin IV - Led Zeppelin', 'Nevermind - Nirvana' ] rap_albums = [ 'Igor - Tyler, the Creator', 'To Pimp a Butterfly - Kendrick Lamar', 'My Beautiful Dark Twisted Fantasy - Kanye West' ] indie_albums = [ 'Currents - Tame Impala', 'Melodrama - Lorde', '22, A Million - Bon Iver' ] print("你想听什么流派的音乐?(可选:rock/rap/indie)") genre = input().lower() # 转小写,避免大小写输入错误 # 根据输入的流派选择对应专辑 if genre == 'rock': selected_album = choice(rock_albums) elif genre == 'rap': selected_album = choice(rap_albums) elif genre == 'indie': selected_album = choice(indie_albums) else: print("抱歉,暂不支持这个流派哦") exit() # 退出程序 print(f"推荐专辑:{selected_album}")
原代码的问题说明
- 函数
lists()定义时缺少冒号:,这是Python语法的硬性要求。 - 函数内部定义的
rock_albums等是局部变量,外部无法访问,而且你也没调用这个函数,等于白定义了。 if input("rock")逻辑错误,这会让程序再次弹出输入框,正确应该是判断用户之前输入的genre变量值。- 导入了
from random import choice,但代码里用了random.choice,要么改成直接用choice(),要么改成import random。 - 变量名不统一:函数里是
rock_albums,后面写的是albums_rock,名字颠倒导致找不到变量。
优化点说明
- 把专辑列表放在全局,新手更容易理解和修改。
- 用
input().lower()把输入转成小写,用户输入Rock、ROCK也能识别。 - 补上了
rap和indie的判断逻辑,添加了更多专辑示例。 - 加了
else分支处理无效输入,程序更健壮。
内容的提问来源于stack exchange,提问作者maximilian
相关产品推荐
相关产品推荐

