为什么python中的这个逻辑表达式是假的?
我的问题是,为什么这些表达是错误的为什么python中的这个逻辑表达式是假的?,python,expression,Python,Expression,我的问题是,为什么这些表达是错误的 Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15) [GCC 4.4.1] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> num = raw_input("Choose a number: ") Choose a number: 5 >>> print
Python 2.6.4 (r264:75706, Dec 7 2009, 18:45:15)
[GCC 4.4.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> num = raw_input("Choose a number: ")
Choose a number: 5
>>> print num
5
>>> print ( num < 18 )
False
>>> print ( num == 5 )
False
表达式工作正常。尝试num=float(原始输入(“选择…”))
您正在计算布尔表达式中的字符串。此语句:
num = raw_input("Choose a number: ")
使num
成为一个字符串,而不是一个数字,尽管它的名称有误导性。Python2允许您将字符串与数字进行比较,并且在您的版本中,考虑所有大于所有数字的字符串(字符串的内容不起作用)
在开始比较之前,请使用num=int(num)
生成一个整数(并确保使用try/except捕捉用户键入的数字以外的内容时可能出现的错误!)
(在Python3中,函数名从
raw_input
更改为input
,它仍然返回字符串;但是在Python3中,将字符串与数字进行比较被视为错误,因此在每次比较尝试中都会得到异常,而不是True
或False
).变量num
实际上不包含数字5
;它包含字符串“5”
。因为Python是强类型的,5==“5”
是False
。首先尝试将其转换为整数:
>>> print (int(num) < 18)
True
打印(整数(num)<18)
真的
num
是一个字符串。您无法有意义地将字符串与整数进行比较,而且字符串永远不等于整数(因此==返回false,并且
返回他们想要的任何内容)。
不抛出错误的原因(在python 3之前)当您比较字符串和整数时,可以对异构列表进行排序。请注意:如果您在交互式控制台中使用num
而不是print num
,您会立即注意到错误,因为它会打印'5'
而不是5
>>> print (int(num) < 18)
True