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

Python while循环无限运行求助:输入整数后仍无法退出循环

问题分析与解决

你的第一个while循环无限运行的核心原因是:Python的input()函数返回的永远是字符串类型,不管你输入的是数字还是其他内容,num的类型始终是str,所以isinstance(num, int)永远为False,循环条件一直满足,自然退不出来。

修正方案

需要把输入的字符串尝试转换为整数,同时处理输入非数字的错误情况,用try-except捕获转换失败的异常,再配合循环实现正确的输入校验。另外第二个循环里用num/2会得到浮点数(比如4/2=2.0),建议改用整数除法//来保持num为整数类型。

修正后的代码:

while True:
    try:
        num = int(input("Enter a number:"))
        break
    except ValueError:
        print("请输入有效的整数")

while num > 1:
    print(num)
    if num % 2 == 0:
        num = num // 2  # 整数除法,保持num为整数
    else:
        num = 3 * num + 1
print(num)  # 最后输出1,完成考拉兹序列

改动说明

  • 用while True构建无限循环,直到成功将输入转为整数才break退出
  • try-except块捕获int()转换失败的ValueError,提示用户重新输入
  • 把num/2改为num//2,避免num变成浮点数,保证后续的取余和比较逻辑正常

内容的提问来源于stack exchange,提问作者Bennett O'Neill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:54:56