【问题标题】:Python number averages using lists and keys使用列表和键的 Python 数平均值
【发布时间】:2013-11-27 20:11:01
【问题描述】:

我正在处理一项 Python 作业,但我完全陷入了困境。任何帮助将不胜感激。我知道这可能不像我想象的那么复杂……详细信息如下。非常感谢。

实现以下三个函数(您应该使用适当的循环结构来计算平均值):

allNumAvg(numList) :获取一个数字列表并返回列表中所有数字的平均值。

posNumAvg(numList) :获取一个数字列表并返回列表中大于零的所有数字的平均值。

nonPosAvg(numList) :获取一个数字列表,并返回列表中小于或等于零的所有数字的平均值。

编写一个程序,要求用户输入一些数字(正数、负数和零)。您的程序不应要求用户输入固定数量的数字。此外,它不应该询问用户想要输入的数字数量。但它应该要求用户输入一些数字并以 -9999(一个标记值)结尾。用户可以按任何顺序输入数字。您的程序不应要求用户分别输入正数和负数。

然后您的程序应该创建一个包含输入数字的列表(确保不在此列表中包含标记值 (-9999))并输出列表和具有以下键值对的字典(使用输入列表及以上功能):

Key = 'AvgPositive' : Value = 所有正数的平均值

Key = 'AvgNonPos' : Value = 所有非正数的平均值

Key = 'AvgAllNum' : Value = 所有数字的平均值

示例运行:

输入一个数字(-9999 结束):4

输入一个数字(-9999 结束):-3

输入一个数字(-9999 结束):-15

输入一个数字(-9999 结束):0

输入一个数字(-9999 结束):10

输入一个数字(-9999 结束):22

输入一个数字(-9999 结束):-9999

输入的所有数字的列表是:

[4, -3, -15, 0, 10, 22]

具有平均值的字典是:

{'AvgPositive':12.0,'AvgNonPos':-6.0,'AvgAllNum':3.0}

编辑:这是我到目前为止所做的,我很快就做了一些工作,但我不知道如何像作业要求的那样实现键/字典。再次感谢您的帮助。

print("This program takes user-given numbers and calculates the average") 
counter = 0  
sum_of_numbers = 0 

first_question = int(input('Please enter a number. (Enter -9999 to end):')) 

while first_question != -9999 :
    ent_num = int(input('Please enter a number. (Enter -9999 to end):'))
    sum_of_numbers = sum_of_numbers + ent_num
    counter = counter + 1
    first_question = int(input('Please enter a number (Enter -9999 to end):'))

print("Your average is " + str(sum_of_numbers/counter))

【问题讨论】:

  • 这个问题似乎强烈暗示您应该将这些数字放在一个列表中并对该列表进行后处理,而不是在输入循环中进行计算。快速浏览一下可用于对列表进行操作的函数(例如sum())应该会让这变得非常简单......列表推导式让它变得更加容易......

标签: list python-3.x dictionary key


【解决方案1】:

欢迎来到 Python 编程,以及一般的编程!

根据您的代码,我假设您并不完全熟悉 Python 列表、字典和函数以及如何使用它们。我建议您查找这些教程;知道如何使用它们将使您的任务更容易。

以下是我通过快速搜索找到的一些教程,可能会有所帮助: Dictionary Tutorial, List Tutorial, Function Tutorial

当你的任务说要创建三个函数时,你可能应该创建实际的函数,而不是试图将函数放入你的循环中。例如,这里有一个简单的函数,它接受一个数字并在其上加 5,然后返回它:

def addFive(number):
    return number + 5

要在你的代码中使用它,你会得到这样的东西:

num = 6 # num is now 6
num = addFive(num) # num is now 11

因此,您应该创建一个包含用户输入的所有数字的列表对象,然后将该对象传递给三个单独的函数 - posNumAvg、nonPosAvg、allNumAvg。

创建键值对字典非常简单 - 首先创建字典,然后用适当的值填充它。例如,下面是我如何创建像 {'Hello': 'World'}

这样的字典
values = {}
values['Hello'] = 'World'
print(values) # Will print out {'Hello': 'World'}

因此,您只需为所需的三个值中的每一个,将函数调用的结果分配给相应的键。

如果这还不足以让您弄清楚这个作业,请再次阅读教程并使用列表、字典和函数来尝试了解它们。祝你好运!

附:列表的 append 方法将对您有所帮助。尝试弄清楚如何使用它!

【讨论】:

    猜你喜欢
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多