如何在循环中对用户输入数字求和?首个输入未累加问题排查
问题分析与解决方案
原代码的问题
你的代码里第一个输入的数字没被计入总和,核心原因是:
- 你先输入第一个
number,但进入循环后直接重新输入并覆盖了初始值,随后才把新输入的数字加到total里,初始输入的数字完全没机会被累加。 - 另外,当输入
-1时,代码会把-1也计入总和,这不符合终止时不统计的需求。
改变量名导致死循环的原因
如果你把第一个变量名改成其他名称(比如first_num),但循环条件还是first_num != -1,而循环内部又没有修改first_num的值,那只要初始输入的first_num不是-1,循环条件就会永远成立,自然陷入死循环。
修正后的代码方案
方案一:先处理初始输入
先把第一个输入的数字计入总和,之后在循环里判断新输入的数字是否为-1,不是再累加:
number = int(input("Enter a number")) total = number # 初始数字先计入总和 while number != -1: number = int(input("Enter another number")) if number != -1: total += number print(total)
方案二:用无限循环更直观(推荐)
Python没有do-while循环,但可以用while True配合break实现类似逻辑,每次输入后先判断是否终止,逻辑更清晰:
total = 0 while True: number = int(input("Enter a number (enter -1 to stop): ")) if number == -1: break total += number print(total)
这个方案里,所有输入都会先检查是否是-1,是就退出循环,否则加到总和里,既避免了初始输入被遗漏,也不会把终止符-1计入结果。
内容的提问来源于stack exchange,提问作者dibs
相关产品推荐
相关产品推荐

