You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python音乐选曲程序输出3-5条非预期结果的bug修复方案

问题根因
  • 判断逻辑完全失效:你写的if music == 'phonk' or 'Phonk'属于Python基础语法错误,or后面直接跟非空字符串时,这个表达式的布尔值永远为True,所以不管用户输入什么内容,四个流派的分支都会全部执行,这就是每次运行会打印多条随机流派结果的直接原因。
  • 歌单列表存在语法错误:
    • phonk列表中两处把两个独立链接写在了同一个字符串内,链接之间漏了分隔用的逗号和引号
    • rap列表中t=1180和t=1275两个链接之间漏了逗号,Python会自动拼接相邻的两个字符串,导致选中这条时会出现两个粘在一起的无效链接
  • 文件操作逻辑错误:四个分支反复用w+模式打开results.txt,每次打开都会清空文件之前写入的内容,最终文件只会保留最后一个执行分支的写入结果;同时打开文件后没有执行关闭操作,可能出现写入内容丢失的问题。
  • 冗余代码问题:hiphop、trap分支中存在无意义的pass语句,重复的文件操作、分支判断代码完全可以合并简化。
  • 细节错误:存在变量名、提示文案的拼写错误,链接里的HTML转义字符&没有替换为正常的&,会导致链接失效;导入了未使用的os模块。
修复后代码
import random
import time

# 修复歌单列表的逗号缺失、字符串粘连、转义字符问题
phonk = [
    'https://youtu.be/URhQ9iJHIsU?t=0',
    'https://youtu.be/URhQ9iJHIsU?t=136',
    'https://youtu.be/URhQ9iJHIsU?t=212',
    'https://youtu.be/URhQ9iJHIsU?t=344',
    'https://youtu.be/URhQ9iJHIsU?t=465',
    'https://youtu.be/URhQ9iJHIsU?t=581',
    'https://youtu.be/URhQ9iJHIsU?t=752',
    'https://youtu.be/URhQ9iJHIsU?t=888',
    'https://youtu.be/URhQ9iJHIsU?t=1663',
    'https://youtu.be/URhQ9iJHIsU?t=1015',
    'https://youtu.be/URhQ9iJHIsU?t=1119',
    'https://youtu.be/URhQ9iJHIsU?t=1749'
]

rap = [
    'https://youtu.be/bOA_WhT6ff8?t=0',
    'https://youtu.be/bOA_WhT6ff8?t=160',
    'https://youtu.be/bOA_WhT6ff8?t=380',
    'https://youtu.be/bOA_WhT6ff8?t=535',
    'https://youtu.be/bOA_WhT6ff8?t=690',
    'https://youtu.be/bOA_WhT6ff8?t=840',
    'https://youtu.be/bOA_WhT6ff8?t=1030',
    'https://youtu.be/bOA_WhT6ff8?t=1180',
    'https://youtu.be/bOA_WhT6ff8?t=1275',
    'https://youtu.be/bOA_WhT6ff8?t=1480'
]

hiphop = [
    'https://www.youtube.com/watch?v=tfSS1e3kYeo&ab_channel=TravisScottVEVO',
    'https://www.youtube.com/watch?v=ecw1sMKq5ME&ab_channel=MGKVEVO',
    'https://www.youtube.com/watch?v=YS8fUmyu320&ab_channel=MurdaBeatzVEVO',
    'https://www.youtube.com/watch?v=YS8fUmyu320&ab_channel=MurdaBeatzVEVO',
    'https://www.youtube.com/watch?v=oak7VyEHvro&ab_channel=BigSeanVEVO',
    'https://www.youtube.com/watch?v=ELpB_ULQC-E&ab_channel=Smokepurpp-Topic',
    'https://www.youtube.com/watch?v=bXcSLI58-h8&ab_channel=LilNasXVEVO',
    'https://www.youtube.com/watch?v=leJNDpm_G10&ab_channel=YoungThug',
    'https://www.youtube.com/watch?v=R4ITBv0h-kc&ab_channel=DaBabyVEVO',
    'https://www.youtube.com/watch?v=yzh6uX9fY0A&ab_channel=JuiceWRLD-Topic'
]

trap = [
    'https://www.youtube.com/watch?v=Pw-0pbY9JeU&ab_channel=twentyonepilots',
    'https://www.youtube.com/watch?v=f5i7yvgzPUU&ab_channel=TheChainsmokers-Topic',
    'https://www.youtube.com/watch?v=OdFldPPptiY&ab_channel=BigBeatRecords',
    'https://www.youtube.com/watch?v=UprcpdwuwCg&ab_channel=FueledByRamen',
    'https://www.youtube.com/watch?v=7-PP4YpBbmA&ab_channel=AlanWalkerVEVO',
    'https://www.youtube.com/watch?v=VzuNsNwKfZc&ab_channel=TribalTrap',
    'https://www.youtube.com/watch?v=Mjbol87vRzs&ab_channel=Jinco-Topic',
    'https://www.youtube.com/watch?v=zNvYPVwKuH4&ab_channel=SanHolo-Topic',
    'https://www.youtube.com/watch?v=pXRviuL6vMY&ab_channel=FueledByRamen',
    'https://www.youtube.com/watch?v=svpmv65Ii60&ab_channel=TrapNation'
]

# 用字典统一管理流派和对应歌单,简化判断逻辑
music_map = {
    'phonk': phonk,
    'rap': rap,
    'hiphop': hiphop,
    'trap': trap
}

print('Welcome to music picker 1.0 :) ')
time.sleep(2)
print('DISCLAIMER! RIGHT NOW WE ONLY HAVE 4 TYPES OF MUSIC. THAT IS RAP,HIPHOP,TRAP AND PHONK(drift phonk) ')
time.sleep(3)
music = input('let us know your type of music: ').strip().lower()

if music not in music_map:
    print(f"Unsupported music type, currently only support: {', '.join(music_map.keys())}")
else:
    # 只对用户选中的流派随机选歌
    selected_link = random.choice(music_map[music])
    print(selected_link)
    # 用上下文管理器操作文件,自动完成打开、写入、关闭流程,不会出现内容丢失
    with open('results.txt', 'w', encoding='utf-8') as f:
        f.write(f'please do not type in here ! {selected_link}')

print('please delete the results file so that you can copy more links :]')
time.sleep(2)
print('press enter to exit')
input()
修复说明
  • 把用户输入统一转为小写后做匹配,不用再单独判断首字母大写的情况,逻辑更简洁
  • 用字典统一映射流派和对应歌单,去掉了四个重复的if分支,从根源上避免分支全部执行的问题
  • 修复了所有歌单列表里的逗号缺失、字符串粘连、转义字符错误问题
  • 用with open()上下文管理器处理文件写入,自动关闭文件,不会出现内容丢失,也不会反复清空重写
  • 修正了所有拼写错误,增加了非法输入的提示
  • 去掉了无意义的pass语句、冗余导入和重复代码

内容的提问来源于stack exchange,提问作者Alexios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 10:21:39