【发布时间】: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