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
相关产品推荐
相关产品推荐

