问题不清楚,您可能正在寻找此代码:
1 , 2,3
-编辑:上面的代码不是生成器函数,要计算均值,您需要一个简单函数而不是生成器,要使上述函数正常工作,只需调用该函数:
我对Python中的代码有疑问。我想创建一个生成器函数,它将计算几个或无限大数字的平均值。我想我应该使用类似的命令:* args(用于从键盘数字给出),导入统计信息(用于计算平均值),但我不能将其组成。
有人可以帮我吗?
我觉得,虽然您知道想要什么(数字的均值),但您对如何实现自己的目标并不十分清楚,此外,您似乎对编写python的基本知识有些困惑。
像MisterMiyagi询问的那样,您并没有提供太多有关希望生成器函数如何工作的信息。
编辑:根据您的评论(这实际上应该是您的问题的一部分),这是您尝试过的代码:
def f1(*args): for i in args: print(mean) return
问题或尝试解决的问题
我想从您的问题和尝试的解决方案中介绍几件事。
首先,您不需要import statistics
,因为计算均值是一件简单的事情。
第二,您提到的
我想创建一个生成器函数,该函数将计算多个或无限大的数字的平均值。
但是,在您的代码中,您遍历了传递给函数f1
的数字列表,并打印出均值(甚至在哪里定义此变量?)。]] >>
如果只想打印出值,则不需要return
关键字
您的函数不是generator,因为它不是迭代器,您可以从中进行迭代。
您似乎想要从stdin
输入(将值输入终端),但是您甚至在任何地方都没有任何input()
调用。
您实际上并不需要python文档定义的“生成器”。您只需要一个简单的函数即可:
1,2,3,4,5
我现在将向您介绍如何在python中完成这4件事。
这是通过input()
function完成的。分配给该函数的变量将采用用户输入的值,而您放置为该函数参数的任何字符串都将显示为提示用户输入。
input()
根据以上部分的提示,我希望用户输入一堆用逗号分隔的数字。但是,由于它是字符串,因此我们将无法使用该输入进行计算。我们想将该字符串转换为整数列表。
python字符串类具有类方法message = 'Please enter a comma-separated list of numbers:'
numbers = input(message)
。它操作的字符串将转换为列表,而该方法的参数将是用于“拆分”列表的字符。
split()
现在请注意,当我们需要的是整数列表时,# If numbers was a string `1,2,3`, then num_list will be a list `['1','2','3']`
num_list = numbers.split(',')
仍然是字符串列表。我们可以使用for循环遍历列表,将字符串转换为整数。
num_list
或者,更简单的方法是使用
# Create a new list new_num_list = [] # Iterate through the old list for num in num_list: # We use append() to append items to the new number list new_num_list.append(int(num))
list comprehension
3。计算该列表的平均值
现在我们有了列表中的数字,我们只需获得列表中数字的总和,然后将该总和除以列表中值的数量。
new_num_list = [int(num) for num in num_list]
4。打印平均值
这很简单:# Using len() on a list tells us the length of the list (how many values are in the list)
number_of_numbers = len(new_num_list)
# Using sum() gives us the sum of values in the list
sum_of_numbers = sum(new_num_list)
# Calculate the average
average = sum_of_numbers/number_of_numbers
print(average)
注意事项:输入的内容必须是逗号分隔的数字。如果您传入def f1():
# Get input
message = 'Please enter a comma-separated list of numbers:'
numbers = input(message)
# Parse input into list of integers
num_list = numbers.split(',')
new_num_list = [int(num) for num in num_list]
# Calculate average
number_of_numbers = len(new_num_list)
sum_of_numbers = sum(new_num_list)
average = sum_of_numbers/number_of_numbers
# Output
print(average)
或1,a,b,c
,则代码将中断。
问题不清楚,您可能正在寻找此代码:
1 , 2,3
-编辑:上面的代码不是生成器函数,要计算均值,您需要一个简单函数而不是生成器,要使上述函数正常工作,只需调用该函数:
def mean(*args):
print(sum(args) / len(args))
如果需要从用户输入中获取数字,请以这种方式使用该功能:
mean(10,12,13)
问题不清楚,您可能正在寻找此代码:
1 , 2,3
-编辑:上面的代码不是生成器函数,要计算均值,您需要一个简单函数而不是生成器,要使上述函数正常工作,只需调用该函数: