在函数内添加用户输入的数字

时间:2017-12-20 17:46:45

标签: python

我是新手在python中创建用户定义的函数,我想知道这里出了什么问题,我基本上试图让用户输入一个数字,这是他们希望加在一起的数字量。然后,程序将要求他们输入一个数字,表示先前输入的数字所表示的次数。例如,如果用户输入3,程序将要求他们输入三个不同的数字。然后程序将利用我创建的函数将这些数字加在一起。

def add_multi(x):
    z = 0
    for i in range(y):
        z = z + x   
    return z

y = int(input("Enter amount of numbers you wish to add: "))

for i in range(y):
    x = int(input("Enter number: "))

print(add_multi(x))

我输入2作为我想要加在一起的金额数字,然后我选择数字2和1加在一起。通常这会输出3,但它以某种方式输出数字2,我不知道为什么。

如果有人能提供帮助,我会非常感激,因为我完全陷入困境。

5 个答案:

答案 0 :(得分:2)

(1)报废add_multi,(2)创建一个列表来存储多个数字,(3)并返回一个值进行打印。

y = int(input("Enter amount of numbers you wish to add: "))
list_of_inputs = []
for i in range(1, y+1):
    x = int(input("Enter number: "))
    list_of_inputs.append(x)

print(sum(list_of_inputs))

答案 1 :(得分:1)

如果要添加用户输入的多个号码,则需要存储多个号码,因此需要一个列表。以下是修改输入的方法:

user_input = []  # An empty list.
for i in range(1, y+1):
   x = input("Enter number (%d of %d): " % (i, y))
   user_input.append(int(x))

现在您的任务是对user_input中的所有数字求和。这可以通过多种方式完成;例如,阅读for statement上的文档。

答案 2 :(得分:1)

逻辑有点偏。您试图将两个数字存储为一个变量作为数字。尝试使用数组存储到数组中以计算其余部分。像这样:

z=[]
y = int(input("Enter amount of numbers you wish to add: "))

for i in range(y):
    x = int(input("Enter number: "))
    z.append(x)
print(sum(z))

答案 3 :(得分:0)

目前编写代码的方式,由于这些行,它不能接受多个数字作为要添加的输入:

for i in range(y):
    x = int(input("Enter number: "))

输入0后输入1时,1会覆盖前一个' x'价值然后' add_multi'以1作为输入调用。

这就是为什么你也得到两个作为输出的原因。问题出现在以下几行:

z = 0
for i in range(y):
    z = z + x  

由于x = 1且y = 2,所以会发生什么:

// To start off, z = 0
z = 0 + 1 // Now, z = 1 
z = 1 + 1 // Now, z = 2

要解决这些问题,请将输入添加到数组,就像上面提到的其他用户一样,然后将您的功能更改为以下内容。

def add_multi(arr):
    sum = 0
    for num in arr:
    // The 'for' loop goes through each element of the array and lets
    // you use the element as the variable 'num' (the name can be
    // anything you want it to be btw)
         sum += num
    return sum

答案 4 :(得分:0)

虽然这里的其他响应效率更高,但我试图为您保持简单并保持用户定义的功能。

在开头和python3 -m submodule.subsubmodules.subsubmodule 的每次迭代中初始化您的运行总计z,调用add_multi将输入x添加到正在运行的总计y。然后在最后打印总z

这是非常简陋的,一旦你能更好地处理语言,就可以进行优化。

z