作为练习练习,我试图从用户那里获得五个数字并使用while循环返回所有五个数字的总和.我设法收集了五个数字,但总和不是由我的代码提供的(我得到一个数字,但它始终是最后一个数字的两倍).我认为问题在于我使用+ =.
x = 0
while x < 5:
x += 1
s = (int(raw_input("Enter a number: ")))
s += s
print s
Run Code Online (Sandbox Code Playgroud)
Max*_*keh 11
Gruszczy已经解决了您的主要问题,但这里有一些与您的代码相关的建议.
首先,更容易做一个for循环,而不是跟踪迭代while:
s = 0
for i in range(5):
s += int(raw_input('Enter a number: '))
Run Code Online (Sandbox Code Playgroud)
其次,您可以使用内置sum函数简化它:
s = sum(int(raw_input('Enter a number: ')) for i in range(5))
Run Code Online (Sandbox Code Playgroud)
第三,如果用户输入无效输入,则上述两种情况都将失败.你应该添加一个try块来处理这个问题:
s = 0
for i in range(5):
try:
s += int(raw_input('Enter a number: '))
except ValueError:
print 'Invalid input. Counting as a zero.'
Run Code Online (Sandbox Code Playgroud)
或者,如果您想强制使用5个有效数字:
round = 0
s = 0
while round < 5:
try:
s += int(raw_input('Enter a number: '))
except ValueError:
print 'Invalid input.'
else:
round += 1
Run Code Online (Sandbox Code Playgroud)
这应该会更好.
x = 0
s = 0
while x < 5:
x += 1
s += (int(raw_input("Enter a number: ")))
print s
Run Code Online (Sandbox Code Playgroud)
您将其中一个结果放在所有结果的总和上,并丢失了之前的结果.