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

Python中实现程序回到指定行循环执行的问题求助

Python中实现程序回到指定行循环执行的问题求助

嘿,我完全懂你现在的困扰——一开始写的代码遇到用户输入非整数就直接结束了,想让它回到开头重新输入,结果加了while True循环后又停不下来,对吧?别着急,我来帮你搞定这个问题~

首先咱们先理清楚问题出在哪:

  • 你最开始的代码没有循环逻辑,所以只要走到if分支打印提示后,程序就会执行到末尾直接结束,没法回到开头;
  • 后来你加了while True这个无限循环,但没给正确的退出条件,而且代码没写完(你写到els...就停了),所以不管输入对不对,循环都会一直跑下去。

接下来给你两种解决方案,你可以根据需求选:

方案一:用isdigit()判断正整数

如果只需要用户输入正整数,可以用字符串的isdigit()方法来判断输入是否全为数字,这样比找小数点的方式更准确:

while True:  
    num_1 = input("Please enter a whole number: ")
    num_2 = input("Please enter a second whole number: ")
    
    # 检查两个输入是否都是正整数(没有小数点且全为数字)
    if not num_1.isdigit() or not num_2.isdigit():
        print("Sorry, that isn't a whole number")
    else:
        print("Numbers are whole, performing calculation...")
        num_1 = int(num_1)
        num_2 = int(num_2)
        print(f"{num_1} + {num_2} = {num_1 + num_2}")
        # 计算完成后跳出循环,程序结束
        break

这个逻辑很简单:只要输入不符合要求,就提示错误然后回到循环开头重新输入;输入正确的话就执行计算,最后用break跳出无限循环,程序就正常结束啦。

方案二:用try-except捕获转换错误(更健壮)

如果需要支持负整数(比如-5),或者想处理用户输入字母、符号等更多错误情况,用try-except的方式会更靠谱:

while True:  
    try:
        # 尝试把输入转换成整数,失败的话会触发ValueError
        num_1 = int(input("Please enter a whole number: "))
        num_2 = int(input("Please enter a second whole number: "))
        
        # 能走到这里说明转换成功,是整数
        print("Numbers are whole, performing calculation...")
        print(f"{num_1} + {num_2} = {num_1 + num_2}")
        # 完成计算后跳出循环
        break
    except ValueError:
        # 转换失败时执行这里,提示错误后回到循环开头
        print("Sorry, that isn't a whole number")

这种方式的优势在于:不管用户输入的是带小数点的数、字母、符号,还是正负整数,只要能转换成int就认为是合法输入,转换失败就自动提示错误并重新输入,容错性更强。

你之前的问题就是少了break这个退出条件,现在加上之后,程序就能在正确执行完计算后正常结束,不会一直循环啦~

备注:内容来源于stack exchange,提问作者Peter Whitehead

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 09:18:06