如果第一个测试为真,则需要跳过第二个测试。参数之一是字符串,该字符串不能转换为整数,因为Adieu由字母组成,而不是数字。在
可以使用elif代替if:if type(varA) == type('s')) or (type(varB) == type('s')):
print "string involved"
elif int(varA)>int(varB):
print "bigger"
elif (int(varA)
print "smaller"
else:
print "equal"
不过,您根本不需要将varA和{}转换为整数,因为您的第一个测试已经确定这两个都不是字符串,而且我碰巧知道您正在执行的赋值只传递字符串或整数:
^{pr2}$
接下来,当您可以通过使用str直接引用该测试的结果时,不必使用type('s');如果要使用type(),则应该在此处测试标识而不是相等:if type(varA) is str or type(varB) is str:
print "string involved"
elif int(varA)>int(varB):
print "bigger"
elif (int(varA)
print "smaller"
else:
print "equal"
不过,使用isinstance()来测试类型几乎总是更好的,因为这样可以让子类也通过测试:
^{pr2}$
接下来,当您可以通过使用str直接引用该测试的结果时,不必使用type('s');如果要使用type(),则应该在此处测试标识而不是相等:if isinstance(varA, str) or isinstance(varB, str):
print "string involved"
elif varA > varB:
print "bigger"
elif varA < varB:
print "smaller"
else:
print "equal"
我强烈怀疑你的作业要求你创建一个函数,返回结果,而不是打印。在这种情况下,您需要改用return语句:if isinstance(varA, str) or isinstance(varB, str):
return "string involved"
elif varA > varB:
return "bigger"
elif varA < varB:
return "smaller"
else:
return "equal"