temp = '32'
if temp > 85:
print "Hot"
elif temp > 62:
print "Comfortable"
else:
print "Cold"
为什么输出“热”,不应该是“冷”?
答案 0 :(得分:6)
因为temp
是一个字符串而不是整数。
对于Benji:我们知道它是一个字符串,因为分配给变量的值用单引号括起来!
Benji的更多内容:我们知道它不是一个整数,因为如果它是,它将是无引号! temp = 34
喜欢这样
答案 1 :(得分:4)
正如其他人所说,你正在将一个字符串与一个整数进行比较,而且应该只是将整数相互比较。然而,它返回True
的原因是:
>>> type('32')
<type 'str'>
>>> type(85)
<type 'int'>
>>> 'str' > 'int
True
如果您对使用<
在Python 2.7中评估不同类型的方式感到好奇:
>>> """any number type""" < dict() < list() < set() < str() < tuple()
True
请注意,正如评论中Martijn Pieters所提到的,数字类型是在所有其他类型之前显式放置的,并且此行为不是类型名称的字母排序的结果。
答案 2 :(得分:2)
通过在&#39; 32&#39;周围加上引号,您将其定义为字符串,然后将其与int进行比较。
Python评估字符串是否大于&#39; int,基于类型名称:How does Python compare string and int?
只需删除&#39; 32&#39;周围的引号,它就能正常工作。
答案 3 :(得分:0)
您正在将字符串与整数进行比较。无论内容如何,字符串总是大于整数。有关原因,请参阅here。只需将变量设为整数。
答案 4 :(得分:0)
删除数字temp I.e。
周围的单引号temp = 42
不
temp =&#39; 42&#39;
这是由于字母和数字字符串被转换为它们的ASCII等价物然后进行比较。这方面的一个例子是字母&#39; A&#39; = 0,&#39; a&#39; = 30.您可以在线查看这些值以获得更多理解。