Python中答错题目仍会增加分数的问题排查
你的问答游戏分数模块问题修复方案
嘿,我一眼就揪出问题所在啦!
核心问题:错误的条件判断逻辑
你写的if语句有个典型的语法逻辑错误:
if (bolivia == "La Paz" or "Sucre"):
在Python里,or需要连接两个完整的比较表达式。这里"Sucre"是一个非空字符串,会被Python自动判定为True——这就导致不管你输入什么内容,这个if条件永远会成立,所以哪怕答错了,程序也会执行“正确”的分支给你加分。
另外代码里还有个小拼写错误:You/re应该改成You're。
修正后的完整代码
这里给你两种正确的写法,选一种就行:
写法1:完整的比较表达式
score = 0 bolivia = input("Name a capital of Bolivia.") # input本身就是字符串,不用额外转str() if bolivia == "La Paz" or bolivia == "Sucre": print("Correct") score += 50 # 等价于score = score +50,写法更简洁 print(score) else: print("You're incorrect") input("Press enter to exit;)")
写法2:用in运算符更简洁
如果以后要加更多正确答案,这种写法更易维护:
score = 0 correct_capitals = ["La Paz", "Sucre"] bolivia = input("Name a capital of Bolivia.").strip() # strip()去掉输入前后的空格 if bolivia in correct_capitals: print("Correct") score += 50 print(score) else: print("You're incorrect") input("Press enter to exit;)")
额外优化建议
可以让程序忽略大小写,比如用户输入la paz或者SUCRE也能识别正确,只需要把输入转成统一格式:
bolivia = input("Name a capital of Bolivia.").strip().title() # 转成标题大小写,比如"la paz"变成"La Paz"
内容的提问来源于stack exchange,提问作者user9785903
相关产品推荐
相关产品推荐

