来自用户输入字符串的累计总数

时间:2016-03-06 13:48:38

标签: python-3.x type-conversion

我试图编写一个函数,它将整数序列作为用户的输入并返回累计总数。例如,如果输入为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'

我不知道这个错误意味着什么。请帮我调试我的代码。

2 个答案:

答案 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)