我试图编写一个函数,它将整数序列作为用户的输入并返回累计总数。例如,如果输入为1 7 2 9
,则该函数应打印1 8 10 19
。我的程序没有用。这是代码:
x=input("ENTER NUMBERS: ")
total = 0
for v in x:
total = total + v
print(total)
这是输出:
ENTER NUMBERS: 1 2 3 4
Traceback (most recent call last):
File "C:\Users\MANI\Desktop\cumulative total.py", line 4, in <module>
total = total + v
TypeError: unsupported operand type(s) for +: 'int' and 'str'
我不知道这个错误意味着什么。请帮我调试我的代码。
答案 0 :(得分:0)
此代码可以使用。请记住:阅读代码并了解其工作原理。
x = input("Enter numbers: ") #Take input from the user
list = x.split(" ") #Split it into a list, where
#a space is the separator
total = 0 #Set total to 0
for v in list: #For each list item
total += int(v) #See below for explanation
print(total) #Print the total so far
此代码中有两件新内容:
x.split(y)
将x
拆分为较小的字符串列表,使用y
作为分隔符。例如,"1 7 2 9".split(" ")
会返回[&#34; 1&#34;,&#34; 7&#34;,&#34; 2&#34;,&#34; 9&#34;]。total += int(v)
更复杂。我会更多地分解它:
split()
函数给了我们一个字符串数组,但我们想要数字。 int()
函数(除其他外)将字符串转换为数字。这样,我们就可以添加它。+=
运算符表示&#34;递增&#34;。写x += y
与写x = x + y
相同,但输入的时间更短。代码还有另一个问题:你说你需要一个函数,但这不是一个函数。函数可能如下所示:
function cumulative(list):
total = 0
outlist = []
for v in list:
total += int(v)
outlist.append(total)
return outlist
并使用它:
x = input("Enter numbers: ").split(" ")
output = cumulative(x)
print(output)
但程序运行正常。
答案 1 :(得分:0)
input_set = []
input_num = 0
while (input_num >= 0):
input_num = int(input("Please enter a number or -1 to finish"))
if (input_num < 0):
break
input_set.append(input_num)
print(input_set)
sum = 0
new_list=[]
for i in range(len(input_set)):
sum = sum + input_set[i]
new_list.append(sum)
print(new_list)