[英]Appending, avg list, dict, key
我尝试学习Python,但遇到了我的一个练习问题。
第二个问题:在第二个函数中,为什么不在x
附加大于零的int
?
说明:
实现以下三个函数(您应该使用适当的循环构造来计算平均值):
- allNumAvg(numList):获取一个数字列表,并返回列表中所有数字的平均值。
- posNumAvg(numList):获取一个数字列表,并返回列表中所有大于零的数字的平均值。
- nonPosAvg(numList):获取一个数字列表,并返回列表中所有小于或等于零的数字的平均值。
编写一个程序,要求用户输入一些数字(正数,负数和零)。 您的程序不应要求用户输入固定数量的数字。 同样,它也不应询问用户想要输入的数字数量。 但是,它应该要求用户输入一些数字并以-9999(一个前哨值)结尾。 用户可以按任何顺序输入数字。 您的程序不应要求用户分别输入正数和负数。
然后,您的程序应使用输入的数字创建一个列表(确保在此列表中不包含前哨值(-9999)),并输出列表和包含以下键值对的字典(使用输入列表和上述内容)职能):
- 键='AvgPositive':值=所有正数的平均值
- 键='AvgNonPos':值=所有非正数的平均值
- 键='AvgAllNum':值=所有数字的平均值样本运行:
输入数字(-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}
def nums():
values = []
while -9999 not in values:
x = int(input("Enter any amount of numbers or -9999 to quit: "))
values.append(x)
values.remove(-9999)
return values
def allNumAvg(values):
average = 0
sum = 0
for n in values:
sum = sum + n
average = sum / len(values)
return average
def posNumAvg(values):
x = []
average = 0
sum = 0
if int in values > 0:
x.append(int)
print(x)
print(posNumAvg(nums()))
您的allNumAvg
函数需要更改:
def allNumAvg(values):
average = 0
sum = 0
for n in values:
sum = sum + n
# this shouldn't happen inside the loop
average = sum / len(values)
return average
我不确定为什么你会写它,而不仅仅是return sum(values)/len(values)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.