我是新手在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,我不知道为什么。
如果有人能提供帮助,我会非常感激,因为我完全陷入困境。
答案 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