我不知道为什么if statements
for loops
中的Traceback (most recent call last):
File "/Users/me/Documents/Eclipse/Week6/src/numbers.py", line 44, in <module>
myDict = {'AvgPositive':posNumAvg(numInput), 'AvgNonPos':nonPosAvg(numInput), 'AvgAllNum':allNumAvg(numInput)}
File "/Users/me/Documents/Eclipse/Week6/src/numbers.py", line 30, in posNumAvg
if num > 0:
TypeError: unorderable types: function() > int()
认为它们是无法比较的类型。我得到的确切错误如下:
#While loop function for user input
def numInput():
numbers = []
while True:
num = int(input('Enter a number (-9999 to end):'))
if num == -9999:
break
numbers.append(num)
return numbers
#Average of all numbers function
def allNumAvg(numList):
return sum(numList) / len(numList)
#Average of all positive numbers function
def posNumAvg(numList):
for num in [numList]:
if num > 0:
posNum = sum(num)
posLen = len(num)
return posNum / posLen
#Avg of all negative numbers function
def nonPosAvg(numList):
for num in [numList]:
if num < 0:
negNum = sum(num)
negLen = len(num)
return negNum / negLen
#Creates Dictionary
myDict = {'AvgPositive':posNumAvg(numInput), 'AvgNonPos':nonPosAvg(numInput), 'AvgAllNum':allNumAvg(numInput)}
#Prints List
print ('The list of of all numbers entered is\n', numInput(),'\n')
#Prints Dictionary
print ('The dictionary with averages is\n', myDict)
我的代码如下:
{{1}}
我知道我缺少一些基本概念。
答案 0 :(得分:4)
numInput
是一个函数,但在此处定义posNumAvg
时将其传递给myDict
时,您不会调用它:
posNumAvg(numInput)
该函数作为局部变量posNumAvg
传递给numList
,然后是num
,然后与0
进行比较,始终引用该函数。无法比较函数和数字,这就是您所看到的错误。
您可能只需要调用该函数,如下所示:
posNumAvg(numInput())