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

Python猜数字游戏输入4/5位数字后无响应闪退问题排查求助

问题根因

你代码的核心问题是采用了3个独立的串行while循环,一旦输入值的大小关系变化,就会跳出当前循环,后续循环不满足条件时程序会直接终止:

  • 当你第一次输入4/5位数字时,因为x取值范围是1~100,输入值肯定大于x,会进入第一个while y>x循环,提示你重新输入
  • 如果你后续输入的数字小于x,第一个循环条件不满足直接退出,进入第二个while y<x循环,再次提示你输入
  • 要是这时候你输入的数字又大于x,第二个循环条件不满足直接退出,第三个while y==x条件也不满足,程序就会直接结束,没有任何提示,和你描述的现象完全吻合。

另外还有一个隐形问题:如果输入内容不是合法整数,int()转换会抛出ValueError导致程序直接崩溃闪退,如果你是双击运行py脚本,看起来就是无响应退出。你之前只修改最后一段判断逻辑,没有解决核心的串行循环问题,所以问题依然存在。

修复后的代码

import random
x = random.randint(1, 100)
# 首次输入加异常捕获,避免非整数输入崩溃
while True:
    try:
        y = int(input('write your number: '))
        break
    except ValueError:
        print("请输入合法的整数")

# 统一用一个循环处理所有判断逻辑
while True:
    if y > x:
        print('my number is smaller')
    elif y < x:
        print('my number is bigger')
    else:
        print('you are right')
        break
    # 猜不对就继续要求输入,同样加异常捕获
    while True:
        try:
            y = int(input('write your number: '))
            break
        except ValueError:
            print("请输入合法的整数")

改动说明

  • 把所有猜数字的判断逻辑放到同一个死循环内,只要没猜对就不会退出循环,不会出现大小关系变化后程序直接终止的问题
  • 增加了非法输入的异常捕获,避免输入非整数内容时程序直接崩溃
  • 修正了原代码里的拼写错误your right,如果需要保留原拼写可以自行改回

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:21:00