Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “中的无序类型”;如果;谓语_Python_Python 3.x - Fatal编程技术网

Python “中的无序类型”;如果;谓语

Python “中的无序类型”;如果;谓语,python,python-3.x,Python,Python 3.x,错误正是它在tin上所说的:当你给它一个函数和一个字符串时,解释器无法找出哪个更大。这意味着testAvg是代码中其他地方的函数名。您需要使用任何适当的参数实际调用它,并让它返回正确的值。调用它一次,然后将其保存到一个局部变量,如average\u score=testAvg()(根据需要传递参数)。然后你可以做一个比较。。。但是,您不应该将其他值强制转换为字符串。将它们保留为整数 此外,您应该重新构造代码,以替换重复的else..if块,该块的结构使用elif关键字。您会遇到该错误,因为您通常

错误正是它在tin上所说的:当你给它一个函数和一个字符串时,解释器无法找出哪个更大。这意味着
testAvg
是代码中其他地方的函数名。您需要使用任何适当的参数实际调用它,并让它
返回正确的值。调用它一次,然后将其保存到一个局部变量,如
average\u score=testAvg()
(根据需要传递参数)。然后你可以做一个比较。。。但是,您不应该将其他值强制转换为字符串。将它们保留为整数


此外,您应该重新构造代码,以替换重复的
else..if
块,该块的结构使用
elif
关键字。

您会遇到该错误,因为您通常不想比较两种不同类型的对象,在本例中是函数和字符串。首先,修复testAvg,使其成为一个数字而不是一个函数,因为我假设这是您想要比较的。您可能将testAvg设置为一个函数,而不是该函数返回的内容

if (testAvg <= str(100)) and (testAvg >= str(90)):
TypeError: unorderable types: function() <= str()
if(testAvg=str(90))
应该是:

if (testAvg <= str(100)) and (testAvg >= str(90))
if(testAvg=90)
在函数中还有很多可以改进的地方,比如不使用全局变量(而是返回字符串),使用
elif
而不是
else if
,纠正缩进和条件链接(例如,上面可以写成
901)。你可能只是有点粗心,因为代码中有几行类似于这样的内容:

if (testAvg <= 100) and (testAvg >= 90)
您没有将
()
添加到函数名
testAvg
,因此您得到的是函数本身,而不是其返回值

2.)或者被这样的行误导了:

def testAvg():
    return anything
testAvg = anyvalue

def testAvg():
    anything
因此,您认为
testAvg
是一个简单的变量

3.)或者它发生了一个简单的疏忽,由一个同名函数重新定义了变量testAvg:

def Anyfunction():
    anything

testAvg = Anyfunction  
在第三种情况下,您必须修复代码。 在前两种情况下,您必须像这样修复代码:

def testAvg():
    return anything
testAvg = anyvalue

def testAvg():
    anything
if(testAvg=str(90)):

在每个相关行中。

错误消息会准确地告诉您出了什么问题。您正在将函数与字符串进行比较

此外,您没有处理一些案例: -例如,如果输入值介于79.99和80之间,该怎么办?如果是79.995呢? -如果您得到一个输入
>100
<0

在风格上,你也在做一些可笑的事情。您不应该在函数中声明全局变量,应该向函数传递参数,
testAvg
(至少,传入的值)应该是一个浮点数,而不是函数。您应该使用
elif
,而不是
else:if…
。而且你不应该把事情强加给别人。您应该将浮点数与整数或其他浮点数进行比较。您还使用了分号,这在python中相当笨拙。脚本语言通常省略分号

由于你的期中考试已经结束,这并不能帮助你作弊,这里有一个有效的例子(它有些优化,但如果你通过阅读它并理解它在做什么,你会成为一个更好的程序员。例如,想知道为什么数组中有两个
'a'
字符,为什么我使用整数除法)

从系统导入argv
def测定仪等级(测试VG):

如果为0,则应替换所有
,否则:如果(…
elif
s.不相关,但它会使代码更干净。错误消息说
testAvg
是函数名,而不是包含数字的变量。什么是
testAvg
?您是否在某处声明了名为
testAvg
的函数?作为对实际问题的补充:您您可能希望将要检查的平均值作为参数传递给函数,只返回等级而不是设置全局变量。此外,如果您签出
elif
语句,您可能可以保存一些缩进级别,而且您不需要这样做,并且在每个if语句之间,您已经知道前面的语句不满足如果>90'A'elif>80'B'etc错误消息说
testAvg
是一个函数,而不是一个数字。A.
testAvg
是一个函数。B.您确实可以相互比较字符串。事实上,在Python 2中,您可以将字符串与数字进行比较。A.更正了B.我们知道OP询问的是Python3 beca否则将不会有错误,因此Python2是不相关的。