【问题标题】:boolean not in python布尔值不在 python 中
【发布时间】:2017-04-24 11:52:31
【问题描述】:

我从 1989 年的 K&R 书中学习了去年夏天的 C。我现在正在学习 python3。

我有些困惑。

如果我在 C 中进行测试

如果 !(.....) '!'将 '( )' 中的值更改为相反的值,因此如果为真,则变为假,反之亦然。

所以我想做的就是把它从 C 改成 python。

int card(long long number, int size){
    if(!(size == 13 || size == 15 || size == 16)) { // test to see if valid size.
        printf("INVALID\n");
        return 0;
    }

当我尝试时

def card(number, size):
    if !(size == 13 or size == 15 or size == 16):
        print("INVALID")
        return 0

我遇到语法错误。

所以在网上搜索后,我在python3文档中发现“不是”。

所以我在交互式终端上试试。

   >>> if is not (size == 13 or size == 15 or size == 16):
  File "<stdin>", line 1
    if is not (size == 13 or size == 15 or size == 16):
        ^

解释器说“是”是语法错误。所以我决定删除它,看看会发生什么。它奏效了!

我在网上搜索,没有'is'我找不到'not'?

可以在 C 中使用 'if not ( ......)' 作为 'if !(......)' 的等价物吗?还是我会遇到问题?还是有不同的 python 方式来做到这一点?

【问题讨论】:

  • 只要简单地做if not (...):;在 python 中,is 是身份比较运算符(即检查分配给给定变量的值是否与另一个相同)。
  • 另外,is not 也是一个运算符。相关:stackoverflow.com/questions/18275616/…

标签: python python-3.x boolean


【解决方案1】:

可以在 C 中使用 'if not ( ......)' 作为 'if !(......)' 的等价物吗?

当然。试试看。


但是,我认为您缺少 in 关键字。

你可以这样写

if(!(size == 13 || size == 15 || size == 16)) { 

这样

if size not in {13, 15, 16}:

【讨论】:

  • 从来没有想过用字典来做比较。在 C 中没有类似于字典的类。如果我使用一个数组,它只会比较第一个元素,除非我使用“for循环”和索引来测试每个项目,因为数组实际上只是一个指向连续内存块开头的指针,并且使用它没有索引的名称,让你到索引0。
    你的例子工作正常。
    如果大小不在{13、15、16}中:
    我认为python字典中的值对例如: dict = {'Name': 'Zara'} 你的答案确实有效,但它不是值对,你能解释一下吗?
  • 不是字典,是集合
  • 您也可以使用列表。 if size not in [13, 15, 16]
  • 我认为 { } 的意思是字典。 [ ] 是一个列表, ( ) 是一个元组
  • 谢谢。我还没有看过套装。我正在学习我正在学习的教程中的字典。
【解决方案2】:

"is" 表示两个变量指向同一个对象,同一个内存地址 你可以看到链接 Is there a difference between `==` and `is` in Python?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2022-06-13
    • 2012-04-04
    • 2010-10-10
    • 2018-12-05
    • 1970-01-01
    • 2021-10-18
    相关资源
    最近更新 更多