【问题标题】:True = False == True [duplicate]真=假==真[重复]
【发布时间】:2010-08-31 05:49:10
【问题描述】:

可能重复:
Why can't Python handle true/false values as I expect?

False = True 在这种情况下会引发错误。

False = True
True == False
True

真 + 假 == 真?

if True +  False:
    print True
True

又是真的?

if str(True + False) + str(False + False) == '10':
    print True
True

哈哈

if True + False + True * (False * True ** True / True - True % True) - (True / True) ** True + True - (False ** True ** True):
    print True, 'LOL'
True LOL

为什么这一切都是真的?

【问题讨论】:

  • 因为在这个过程中这些被转换为 True => 1 和 False => 0?我不熟悉 Python,但有些语言只是将它们模拟为 byte/int/(bit?) 的常量。
  • 在 Python 3 中,这是不可能的。
  • 你可以在stackoverflow.com/questions/2764017/…查看关于 True == 1 的讨论

标签: python


【解决方案1】:

False 只是一个全局变量,你可以赋值给它。但是,如果您这样做,它将破坏几乎所有内容。

请注意,此行为已在 python3k 中删除

Python 3.1 (r31:73578, Jun 27 2009, 21:49:46) 
>>> False = True
  File "<stdin>", line 1
SyntaxError: assignment to keyword

另外,int(False) == 0 和 int(True) == 1,因此您可以使用它们进行任意算术运算

【讨论】:

  • 由于 True 和 False 是整数,在 Python 2.x 和 3.x 中,不需要转换它们:False == 0True == 1
  • 不,他们不是。它们是很容易转换为整数的布尔值。如果您不相信我,请尝试“True is 1”。
  • @KirkStrauser:你应该试试isinstance(True, int):这是真的。 True is 1 不是我写的,只是 True 是一个整数(通过继承)。
【解决方案2】:

请参阅Why can't Python handle true/false values as I expect?,这将回答您的第一个问题。基本上你可以想到:

False = True
True == False
True

作为

var = True
True == var
True

(让我想起了#define TRUE FALSE // Happy debugging suckers *chuckles*)

至于其他问题,当您对TrueFalse 进行算术运算时,它们会转换为10

  • True + False1 + 0相同,即1,即True

  • str(True + False) + str(False + False)str(1) + str(0) 一样,这里的+ 连接字符串,所以你会得到10

  • 你的最后一个是一堆算术运算,得出非零结果 (1),即 True。

【讨论】:

  • 在 C 中,你需要写 typedef enum {TRUE, FALSE} BOOL; 来保持微妙 ;-)
猜你喜欢
  • 2014-02-17
  • 2015-03-30
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 2021-05-28
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多