Python实现输入数字直至负数输入并翻倍格式化输出的循环异常问题排查
解决Python循环无限执行且无法接收新输入的问题
我来帮你梳理下代码里的问题,然后给出修复方案:
问题分析
你的代码有两个核心问题,导致了无限循环和只能处理第一个输入的情况:
- 输入未在循环内更新:你只在循环开始前获取了一次用户输入,之后循环里再也没有重新获取新的
x值。如果第一次输入的是正数,x的值就固定不变了,循环条件x>0永远成立,自然会无限执行。 - 负数判断逻辑无效:你把
if x < 0的判断放在了循环体里,但循环的进入条件是x>0,所以这个判断永远不会被触发,根本无法让程序停止。
修复后的代码
while True: # 每次循环开始时重新获取用户输入 x = float(input()) # 先判断是否为负数,是则终止循环 if x < 0: print('Negative number!') break # 处理非负数的计算与输出 result = x * 2 print(f'Result: {result:.2f}')
代码解释
- 使用
while True创建一个无限循环,这样我们可以在每次循环的最开始就获取新的用户输入,确保每次都能处理不同的数字。 - 获取输入后立刻判断是否为负数:如果是,打印提示信息并通过
break关键字跳出循环,程序直接停止。 - 如果输入的是非负数,就执行乘以2的计算,然后用格式化字符串输出保留两位小数的结果,之后循环会回到开头,等待用户的下一次输入。
内容的提问来源于stack exchange,提问作者Vexarez
相关产品推荐
相关产品推荐

