为什么表达式为false而true为true? (python 2.7)

时间:2014-12-04 04:44:26

标签: python

我的程序中有两个布尔变量叫做after和late。为了确保每个变量都得到正确的值,我使用以下命令测试每个变量:

print(after)
print(late)

程序打印

false
true

正如所料。但是,当我运行以下代码时:

if after and late:
  print('true and true')
elif after and (not late):
  print('true and false')
elif (not after) and late:
  print('false and true')
elif (not after) and (not late):
  print('false and false')

程序打印

'true and true'

表示后面和后面的表达式评估为true。为什么这个评估为真,即使true和false应该产生错误?

1 个答案:

答案 0 :(得分:4)

>>> print(True and False)
False

Boolean值在开头有一个大写字母。我猜你用的是字符串。您可以使用type(after)检查该内容。

您无需手动划分所有案例以“调试”您的程序。这不是Python的目的...... 只需print已评估的代码print(after+' and '+late),就像我一样使用type或使用交互式python控制台来玩游戏。