Python宝可梦初始精灵选择脚本异常:无论输入均仅选中Squirtle
问题分析与修复方案
核心问题
你在获取输入后调用了.lower()把输入转为全小写,但判断条件里用的是首字母大写的精灵名称(比如"Bulbasaur"),两者永远无法匹配,所以不管输入什么都会进入else分支,默认选中Squirtle。另外原代码里rival_name变量未定义,运行时会抛出NameError,需要补充定义。
修复方案
把判断条件里的精灵名称改为全小写,和转小写后的输入匹配,同时补充rival_name的定义:
rival_name = "Gary" # 根据需求替换成你需要的对手名字 starter = input("Which Pokemon will you choose?").lower() if starter == "bulbasaur": print("You chose Bulbasaur") print(f"{rival_name}: I choose you, Charmander!") elif starter == "charmander": print("You chose Charmander") print(f"{rival_name}: I choose you, Squirtle!") else: print("You chose Squirtle") print(f"{rival_name}: I choose you, Bulbasaur!")
也可以选择保留判断条件里的大写名称,去掉输入的.lower(),但这种方式对用户输入的大小写敏感(比如必须输入"Bulbasaur"才能匹配),不如转小写的方式友好。
内容的提问来源于stack exchange,提问作者Gabbonbon
相关产品推荐
相关产品推荐

