for 循环中函数的 *args(非关键字参数)n 不正确
Incorrect number n of *args (Non-Keyword Arguments) at function in for cycle
我是一个菜鸟,试图完成一些任务但遇到了问题。
我必须使用 *args(非关键字参数)计算函数中的算术平均值(我希望它是一个正确的定义)。
所以我有这个
def avsum(*numbers):
summ = 0
print('Numbers', numbers)
for n in numbers:
summ += n
print('Calc', summ)
print('n', n)
print('Numbers', numbers)
result = summ / (n - 1)
return result
print(avsum(2, 3, 4))
所有打印出来的只是为了控制和理解发生的事情。
终端显示如下:
Numbers (2, 3, 4)
Calc 9
n 4
Numbers (2, 3, 4)
3.0
据我了解,*numbers 是非关键字参数,它们是元组。
所以在元组数字中,我有 3 个元素(数字 (2, 3, 4)),但出于某种原因 n 是 4。
我已经将算术平均值设为 sum / (n - 1) ,但它看起来像一个奇怪的解决方案。
任何想法为什么会这样?为什么n不是3?
谢谢回复。
更新
感谢您的回复,对不起,也许我很愚蠢,但我真的无法理解如何在评论中编写代码'readable'。正如我做对的那样,它们不能是多行的。这样我就把它添加到问题中
所以我有一个结束任务:
array = [1, 2, 3, 4, 5]
calc = 0
for n in array:
calc += n
print("Sum", calc)
print("Arithmetic mean", calc / n)
print(n)
终端显示这个
Sum 15
Arithmetic mean 3.0
5
所以在这种情况下,不存在您所说的错误,数组有 5 个元素,n 为 5。为什么?到处循环
语句for n in enumerate(numbers):
中的值n是for循环的局部变量,它不存在于循环外,因此当尝试语句result = summ / (n - 1)
时,你很可能收到与未定义变量 n 相关的错误。要更正此错误,请执行以下操作:
result = summ/len(numbers)
鉴于您的输入现在已命名为数组
array = [1, 2, 3, 4, 5]
calc = 0
for n in array:
calc += n
print("Sum", calc)
print("Arithmetic mean", calc / len(array))
我是一个菜鸟,试图完成一些任务但遇到了问题。 我必须使用 *args(非关键字参数)计算函数中的算术平均值(我希望它是一个正确的定义)。
所以我有这个
def avsum(*numbers):
summ = 0
print('Numbers', numbers)
for n in numbers:
summ += n
print('Calc', summ)
print('n', n)
print('Numbers', numbers)
result = summ / (n - 1)
return result
print(avsum(2, 3, 4))
所有打印出来的只是为了控制和理解发生的事情。 终端显示如下:
Numbers (2, 3, 4)
Calc 9
n 4
Numbers (2, 3, 4)
3.0
据我了解,*numbers 是非关键字参数,它们是元组。 所以在元组数字中,我有 3 个元素(数字 (2, 3, 4)),但出于某种原因 n 是 4。 我已经将算术平均值设为 sum / (n - 1) ,但它看起来像一个奇怪的解决方案。 任何想法为什么会这样?为什么n不是3? 谢谢回复。
更新 感谢您的回复,对不起,也许我很愚蠢,但我真的无法理解如何在评论中编写代码'readable'。正如我做对的那样,它们不能是多行的。这样我就把它添加到问题中 所以我有一个结束任务:
array = [1, 2, 3, 4, 5]
calc = 0
for n in array:
calc += n
print("Sum", calc)
print("Arithmetic mean", calc / n)
print(n)
终端显示这个
Sum 15
Arithmetic mean 3.0
5
所以在这种情况下,不存在您所说的错误,数组有 5 个元素,n 为 5。为什么?到处循环
语句for n in enumerate(numbers):
中的值n是for循环的局部变量,它不存在于循环外,因此当尝试语句result = summ / (n - 1)
时,你很可能收到与未定义变量 n 相关的错误。要更正此错误,请执行以下操作:
result = summ/len(numbers)
鉴于您的输入现在已命名为数组
array = [1, 2, 3, 4, 5]
calc = 0
for n in array:
calc += n
print("Sum", calc)
print("Arithmetic mean", calc / len(array))