生成器函数,它在Python中计算多个值的均值[关闭]

问题描述 投票:-1回答:2

我对Python中的代码有疑问。我想创建一个生成器函数,它将计算几个或无限大数字的平均值。我想我应该使用类似的命令:* args(用于从键盘数字给出),导入统计信息(用于计算平均值),但我不能将其组成。

有人可以帮我吗?

python function statistics generator mean
2个回答
0
投票

我觉得,虽然您知道想要什么(数字的均值),但您对如何实现自己的目标并不十分清楚,此外,您似乎对编写python的基本知识有些困惑。

MisterMiyagi询问的那样,您并没有提供太多有关希望生成器函数如何工作的信息。

编辑:根据您的评论(这实际上应该是您的问题的一部分),这是您尝试过的代码:

def f1(*args):
    for i in args:
        print(mean)
    return

问题或尝试解决的问题

我想从您的问题和尝试的解决方案中介绍几件事。

  • 首先,您不需要import statistics,因为计算均值是一件简单的事情。

  • 第二,您提到的

    我想创建一个生成器函数,该函数将计算多个或无限大的数字的平均值。

  • 但是,在您的代码中,您遍历了传递给函数f1的数字列表,并打印出均值(甚至在哪里定义此变量?)。]] >>

  • 如果只想打印出值,则不需要return关键字

  • 您的函数不是generator,因为它不是迭代器,您可以从中进行迭代。

  • 您似乎想要从stdin输入(将值输入终端),但是您甚至在任何地方都没有任何input()调用。

  • 您需要什么:

    您实际上并不需要python文档定义的“生成器”。您只需要一个简单的函数即可:

  1. 以键盘输入为例,例如1,2,3,4,5
  2. 将输入解析为整数的python列表
  3. 计算该列表的平均值
  4. 打印该平均值
  5. 我现在将向您介绍如何在python中完成这4件事。


    1。进行键盘输入

    这是通过input() function完成的。分配给该函数的变量将采用用户输入的值,而您放置为该函数参数的任何字符串都将显示为提示用户输入。

    input()

2。将键盘输入解析为python整数列表

根据以上部分的提示,我希望用户输入一堆用逗号分隔的数字。但是,由于它是字符串,因此我们将无法使用该输入进行计算。我们想将该字符串转换为整数列表。

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)

0
投票

问题不清楚,您可能正在寻找此代码:

1 , 2,3

-编辑:上面的代码不是生成器函数,要计算均值,您需要一个简单函数而不是生成器,要使上述函数正常工作,只需调用该函数:

© www.soinside.com 2019 - 2024. All rights reserved.