You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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}")

说明

  1. 开头导入random模块,解决randint的调用错误。
  2. 把所有误用==的地方改成=,正确定义变量和修改循环终止条件。
  3. 将if/else块缩进在while循环内部,每次输入后立即判断对错,猜对时修改holborn为True终止循环。
  4. 把分数累加移到猜对的分支里,逻辑生效。

内容的提问来源于stack exchange,提问作者JuneauAlaska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:45:33