Python猜数字游戏猜对仍提示错误及函数调用参数设置问题
Python数字猜谜游戏问题排查与解决方案
问题1 输入正确数字仍报错原因
- 类型不匹配:
input()函数返回值为字符串类型,直接和整型的目标数字7做等值判断,结果永远为False,因此输入7也会被判定错误。 - 逻辑顺序错误:原代码赢局判断放在循环内剩余次数判断分支之后,且首次输入正确时不会进入
guess != randomNum的循环分支,永远不会触发You win的输出。 - 次数判定错误:原代码剩余次数小于等于1时就判定输,3次机会实际只能用2次,不符合预期。
问题2 自定义目标数字实现说明
支持两种调用形式:
- 无参调用:函数内部引入
random模块自动生成1-10的随机目标数字,无需传参即可执行。 - 带参调用:定义函数时设置形参接收目标数字,调用时传入
guessNum(1)这类参数即可自定义目标数字。
修复后完整代码
import random # 兼容带参/无参调用:传参则使用传入值作为目标数字,不传则随机生成 def guessNum(randomNum=None): # 无参调用时生成1-10的随机目标数 if randomNum is None: randomNum = random.randint(1, 10) guesses = 3 # 输入内容转整型,解决类型不匹配问题 guess = int(input("guess a number between 1 and 10: ")) while True: # 优先判断是否猜对 if guess == randomNum: print("You win") return # 猜错扣除次数 guesses -= 1 if guesses <= 0: print(f"You lose, the correct number is {randomNum}") return print(f"wrong, {guesses} guesses left") guess = int(input("guess again ")) # 调用示例1:无参调用,随机生成目标数字 # guessNum() # 调用示例2:带参调用,指定目标数字为1 guessNum(1)
验证说明
- 输入对应目标数字会直接输出
You win,类型不匹配问题已修复 - 无需用户输入以外的额外参数即可执行,传入参数即可自定义目标数字
内容的提问来源于stack exchange,提问作者Jeddles
相关产品推荐
相关产品推荐

