如何在while循环最后一次迭代中停止打印但不终止循环?
解决方案
哈哈,我明白你的问题啦——现在代码最后会多出来一个“Give 10 numbers 0 to go”的输入提示,而且这个输入的数字根本不会被加到总和里,完全是多余的。咱们可以调整循环逻辑,既能保证只输入10个数字、求和正确,又能删掉那行多余的提示:
修改后的代码(更简洁的结构)
counter = 0 sum_total = 0 # 建议别用sum当变量名,这是Python内置函数,容易引发冲突 while counter < 10: # 根据当前循环次数生成对应提示语 if counter == 0: prompt = "Give 10 numbers\n" else: remaining = 10 - counter prompt = f"Give 10 numbers {remaining} to go\n" numbers = int(input(prompt)) sum_total += numbers counter += 1 print(f"The sum of those numbers is {sum_total}")
逻辑说明:
- 去掉多余的无效输入:把输入操作放到循环内部,循环执行10次,正好输入10个数字,每个数字都会被累加到总和里,解决了原代码最后一次输入白忙活的问题。
- 精准控制提示显示:第一次输入用初始提示,之后每次输入显示剩余次数(从9到1),循环结束后没有额外的输入请求,自然就不会出现“0 to go”的尴尬提示了。
贴近原代码结构的修改方案
如果你不想大改原代码的框架,也可以加个简单判断来实现需求:
counter = 0 sum_total = 0 numbers = int(input('Give 10 numbers\n')) while counter < 10: sum_total += numbers counter += 1 # 只有还没收集够10个数字时,才继续请求输入 if counter < 10: remaining = 10 - counter numbers = int(input(f'Give 10 numbers {remaining} to go\n')) print(f'The sum of those numbers is {sum_total}')
这个版本和你原代码的结构几乎一致,只是在请求下一次输入前加了个判断:当counter < 10时才弹出输入框,这样当counter变成10时,就不会再显示那行多余的提示了,完美匹配你的需求~
内容的提问来源于stack exchange,提问作者Nadec
相关产品推荐
相关产品推荐

