如何在Python中将True切换为False

18

我需要做什么操作才能使False变为True,或者使True变为False?换句话说,我该如何切换给定变量的布尔值?

    new_dict = {}
    for i in range(1, 101):
        new_dict[i] = False

    i = 2
    while i < 101:
        for x in range(1, 101):
            if new_dict[x] % i == 0:
                a = new_dict[x]
                new_dict[x] = not a
        i += 1
    for a in new_dict:
        print 'Light #%d --> %r' % (a, new_dict[a])
下面的输出结果只有True。由此我理解,出于某种原因,我的操作没有将每个其他值更改为False。为什么会发生这种情况呢?
有人知道原因吗?
    Light #1 --> True
    Light #2 --> True
    Light #3 --> True
    Light #4 --> True
    Light #5 --> True
    Light #6 --> True
    Light #7 --> True
    Light #8 --> True
    Light #9 --> True
    Light #10 --> True
    Light #11 --> True
    Light #12 --> True
    Light #13 --> True
    Light #14 --> True
    Light #15 --> True
    Light #16 --> True
    Light #17 --> True
    Light #18 --> True
    Light #19 --> True
    Light #20 --> True
    Light #21 --> True
    Light #22 --> True
    Light #23 --> True
    Light #24 --> True
    Light #25 --> True
    Light #26 --> True
    Light #27 --> True
    Light #28 --> True
    Light #29 --> True
    Light #30 --> True
    Light #31 --> True
    Light #32 --> True
    Light #33 --> True
    Light #34 --> True
    Light #35 --> True
    Light #36 --> True
    Light #37 --> True
    Light #38 --> True
    Light #39 --> True
    Light #40 --> True
    Light #41 --> True
    Light #42 --> True
    Light #43 --> True
    Light #44 --> True
    Light #45 --> True
    Light #46 --> True
    Light #47 --> True
    Light #48 --> True
    Light #49 --> True
    Light #50 --> True
    Light #51 --> True
    Light #52 --> True
    Light #53 --> True
    Light #54 --> True
    Light #55 --> True
    Light #56 --> True
    Light #57 --> True
    Light #58 --> True
    Light #59 --> True
    Light #60 --> True
    Light #61 --> True
    Light #62 --> True
    Light #63 --> True
    Light #64 --> True
    Light #65 --> True
    Light #66 --> True
    Light #67 --> True
    Light #68 --> True
    Light #69 --> True
    Light #70 --> True
    Light #71 --> True
    Light #72 --> True
    Light #73 --> True
    Light #74 --> True
    Light #75 --> True
    Light #76 --> True
    Light #77 --> True
    Light #78 --> True
    Light #79 --> True
    Light #80 --> True
    Light #81 --> True
    Light #82 --> True
    Light #83 --> True
    Light #84 --> True
    Light #85 --> True
    Light #86 --> True
    Light #87 --> True
    Light #88 --> True
    Light #89 --> True
    Light #90 --> True
    Light #91 --> True
    Light #92 --> True
    Light #93 --> True
    Light #94 --> True
    Light #95 --> True
    Light #96 --> True
    Light #97 --> True
    Light #98 --> True
    Light #99 --> True
    Light #100 --> True

这里的问题 如何在Python中获取布尔值的相反值(否定)? 和这里python如何“否定”值:如果为真,则返回假,如果为假,则返回真看起来是一样的,但在我的情况下,这个简单的概念却不起作用...

谢谢,我非常感谢大家的帮助!!!


1
逻辑非?你只是想切换一个布尔值? - Carcigenicate
1
不确定这是否被认为是简单的打字错误,但我非常确定你要找的答案是:在你的条件中用 x % i == 0 替换 new_dict[x] % i == 0...问题在于 False % 2(或任何数字)为 0,而 True % 数字为 1。我对此不是非常满意,但净效果是第一次通过时,你将所有内容设置为 True,然后再也不进行更改...如果你做你几乎肯定想做的并检查索引与值,它会按照你所期望的方式工作,或者至少给出了一个由 False 和 True 值混合组成的结果。 - Foon
1
如果 x % i == 0: new_dict[x] = not new_dict[x]您正在请求对布尔值进行模块操作,这并不总是被定义的。 - Palash Goel
3个回答

35

假设有一个变量myBool,您可以使用not关键字将其设置。

myBool = True
print(myBool)
myBool = not myBool
print(myBool)

结果为:

True
False

@bjohnson 谢谢,我知道,但它仍然无法工作。 我已经将我的代码添加到问题中。它应该打印出类似True、False、True、False、true等内容,但它输出的所有内容都是False。 - NDKC

2
如果你从一个函数中返回了布尔值,你可以这样做:
bool_value = not my_function()

将布尔值取反可以得到相反的值。这是因为在Python中:

>>> not True
False
>>> not False
True

那么:

>>> value = True
>>> print(value)
True
>>> print(not value)
False

1
使用 not 运算符:
In [1]: b = True

In [2]: not b
Out[2]: False

In [3]: b = not b

In [4]: b
Out[4]: False

In [5]: not b
Out[5]: True

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接