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

Python猜数字游戏内层循环无法终止问题求助

解决猜数字游戏的循环无法终止问题

嘿,我一眼就瞅出你代码里的问题啦!导致循环永远停不下来的核心原因有两个:

问题根源

  • 类型不匹配:randint(1,10)生成的是整数(int),但input()获取的用户输入是字符串(str)。哪怕你输入的数字和随机数完全一样,一个是数字类型一个是文本类型,它们也不可能相等,所以random_num is not guess这个判断永远为真,循环根本停不下来。
  • 错误的比较运算符:就算类型一致,用is来比较数值也不对——is是用来判断两个变量是否指向同一个对象的,判断数值是否相等应该用==(或者取反的!=)。

修复方案

我给你调整了代码,不仅解决了循环问题,还加了一些健壮性处理(比如防止用户输入非数字崩溃),完整代码如下:

from random import randint

print('Welcome to the Number Guessing Game (Numbers 1 - 1000).')
while True:
    tries = 0
    random_num = randint(1, 10)
    print(f"Debug: The random number is {random_num}")  # 保留调试用的打印
    
    # 第一次获取输入并转换为整数,处理非数字输入
    while True:
        try:
            guess = int(input('Guess my number, human: '))
            break
        except ValueError:
            print("Please enter a valid number!")
    
    while guess != random_num:
        tries += 1
        # 再次获取输入并处理非数字情况
        while True:
            try:
                guess = int(input('Try again: '))
                break
            except ValueError:
                print("Please enter a valid number!")
        print(f"Your guess: {guess}")
    
    print(f'Correct! It took you {tries + 1} tries.')  # 补全胜利提示内容
    play_again = input("Want to play again? (y/n): ")
    if play_again.lower() != 'y':
        break

关键修改点

  • 用int()把用户输入的字符串转换成整数类型,确保和随机数的类型一致。
  • 新增try-except块处理用户输入非数字的情况,避免程序直接崩溃。
  • 把循环条件从random_num is not guess改成guess != random_num,用正确的方式比较数值是否相等。
  • 补全了胜利提示的内容,还增加了“是否再玩一次”的交互,让游戏更完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:17:33