Python数字猜谜程序'numb'定义及无限循环问题求助
问题分析与修复
你的代码有几个关键错误,直接导致了变量定义失败和无限循环:
错误点拆解
- 缺少模块导入:没导入
random模块,调用random.randint会直接报错。 - 赋值/比较运算符混淆:用了
==(比较)代替=(赋值):numb == int(input(...)):这是在判断numb和输入值是否相等,而非把输入值赋值给numb,导致numb从未被正确定义。holborn == True:同样是比较操作,没有把holborn设为True,循环条件永远无法终止。
- 缩进错误:判断猜对错的
if/else块没有缩进在while循环内部,导致循环体只有输入语句,永远不会执行判断逻辑,陷入无限输入循环。 - 分数逻辑无效:初始
holborn是False,那段分数累加的代码根本不会执行,应该放到猜对的时候。
修复后的代码
import random print("Guess the Number between 1 and 5") geological = random.randint(1, 5) holborn = False Score = 0 while holborn == False: # 用赋值运算符=正确定义numb numb = int(input("Enter a number: ")) if numb == geological: print("Correct.") Score += 1 # 赋值终止循环 holborn = True else: print("Incorrect. Try again.") print(f"Game over! Your score is: {Score}")
说明
- 开头导入
random模块,解决randint的调用错误。 - 把所有误用
==的地方改成=,正确定义变量和修改循环终止条件。 - 将
if/else块缩进在while循环内部,每次输入后立即判断对错,猜对时修改holborn为True终止循环。 - 把分数累加移到猜对的分支里,逻辑生效。
内容的提问来源于stack exchange,提问作者JuneauAlaska
相关产品推荐
相关产品推荐

