Python如果错误答案

时间:2015-03-23 16:47:22

标签: python python-2.7 loops if-statement

temp = '32'
if temp > 85:
      print "Hot"
elif temp > 62:
      print "Comfortable" 
else:
      print "Cold" 

为什么输出“热”,不应该是“冷”?

5 个答案:

答案 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.您可以在线查看这些值以获得更多理解。