显示;“字典平均值”;Python输出(版本3)
让我先请你耐心点,不要给我的排名太差,我正在尽力不让自己听起来像个十足的傻瓜 我正在为Python编写这个程序,要求用户输入除-9999以外的任何数字(neg number、pos number或zero),然后在末尾给出下面的字典平均值。这是我需要的输出,例如显示;“字典平均值”;Python输出(版本3),python,Python,让我先请你耐心点,不要给我的排名太差,我正在尽力不让自己听起来像个十足的傻瓜 我正在为Python编写这个程序,要求用户输入除-9999以外的任何数字(neg number、pos number或zero),然后在末尾给出下面的字典平均值。这是我需要的输出,例如 Enter a number (-9999 to end): 4 Enter a number (-9999 to end): -3 Enter a number (-9999 to end): -15 Enter a number
Enter a number (-9999 to end): 4
Enter a number (-9999 to end): -3
Enter a number (-9999 to end): -15
Enter a number (-9999 to end): 0
Enter a number (-9999 to end): 10
Enter a number (-9999 to end): 22
Enter a number (-9999 to end): -9999
The list of all numbers entered is:
[4, -3, -15, 0, 10, 22]
The dictionary with averages is:
{'AvgPositive': 12.0, 'AvgNonPos': -6.0, 'AvgAllNum': 3.0}
所以我有下面的代码,但我做得不对(很明显),因为我不知道如何正确地做。它给了我输出“[]无”,因为我不知道如何输出如上所示的“字典平均值”
这就是我所拥有的:
def nums():
values = []
while -9999 not in values:
x = int(input("Enter a numbers (-9999 to end: "))
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()))
您将
posnumag
与allnumag
完全不同的目的是什么?!后者计算并返回某物——那么,你到底为什么要前者打印某物而不返回任何东西(与返回无)。。。?!这种不对称本身会让你发疯为什么你会选择完全不对称
也就是说,posNumAvg
中每行的bug比我最近看到的要多。如何从头开始,利用现有的allNumAvg
,并继续例如
def posNumAvg(values):
return allNumAvg([v for v in values if v>0])
…这看起来不是更好吗?-)
当然,现在您还有其他问题——如果没有一个值是正的,那么您现有的代码最终会尝试将零除以零,这不是一个好主意:-)。而且,根据您使用的是Python2还是Python3(您甚至懒得提及),/
可能是截断除法还是真除法——值得检查。还有其他一些问题,但是,我已经为您的许多实际的和潜在的错误提出了修复建议,我已经超出了一个答案的限额:-)。感谢您的帮助,简化了它。你提到的问题有什么帮助吗?我提交问题的原因是为了找到那些答案;如果用户输入一个负数,我该怎么办?最重要的是,我该如何获得底部的平均值?如果没有值:返回浮点('nan')
处理没有任何要平均的值--nan
,对于“不是一个数字”,是“没有这样的数字”的浮点值。准备dict当然很简单:d={“AvgPositive”:posNumAvg(值),
等等。