Python新手求助:调用自定义函数输入yes后程序中途停止
问题分析与修复方案
核心错误点
- 变量未定义风险:如果输入既不是"yes"也不是"no",
I从未被定义,执行到判断I的语句时会直接报错崩溃;就算输入"yes",后续判断逻辑也存在问题。 - 类型不匹配:
input()返回的是字符串,你却拿它和元组(1, 881)比较,两者类型完全不同,永远不会相等,所以哪怕输入正确答案也会被判定错误。 - 逻辑结构混乱:第三个
if没有嵌套在K == "yes"的分支里,不管用户输入什么(除了"no"直接返回),都会执行这个判断,进一步引发错误。
修复后的代码
def game(): K = input("are you ready? ") if K == "no": return None if K == "yes": I = input("what is 881 divisible by? (输入1或881即可) ") # 处理输入转整数,同时捕获非数字输入的情况 try: num = int(I) if num in (1, 881): print("you won") else: print("better luck next time") except ValueError: print("请输入有效的数字!") else: print("请输入yes或no!")
修复说明
- 新增非"yes"/"no"输入的处理逻辑,避免变量未定义的报错。
- 将输入字符串转为整数,再判断是否属于目标数字集合,匹配题目要求的正确逻辑。
- 加入异常捕获,处理用户输入非数字的情况,让程序更稳定。
- 调整缩进,让代码逻辑层级更清晰。
内容的提问来源于stack exchange,提问作者Anudeep Rathod
相关产品推荐
相关产品推荐

