当前位置: 首页 > 面试题库 >

在python中是什么意思

曾修真
2023-03-14
问题内容

嗨,我遇到了以下代码

numdigits = len(cardNumber)
oddeven = numdigits & 1

这到底是怎么回事?我不确定“&”在做什么。


问题答案:

回答

&符号是按位与运算符。与1一起使用时,基本上会屏蔽该值以提取最低位,换句话说,它将告诉您该值是偶数还是奇数。

有关Python&运算符的更多信息

有关更多信息,请参见:http :
//wiki.python.org/moin/BitwiseOperators

为什么检查奇数与偶数比较有效

编辑:添加此部分,因为此答案越来越喜欢

首先,将值与1进行AND运算的原因是,该值是奇数还是偶数可能并不明显。

数字的二进制表示形式实质上是从最右边的数字开始以1,2,4,4,8开头的向左移动的2的幂的一系列YES或NO的和。

只有一种方法可以用这种方式表示任何数字。例如,数字13(以10为基数)可以二进制形式写为“ 1101”(或十六进制形式为0xD,但是在该点旁边)。看这里:

    1   1   0   1
    x   x   x   x
    8   4   2   1
    =   =   =   =
    8 + 4 + 0 + 1  =  13

请注意,除了最右边的二进制数字外,所有其他1数字都将加和一个偶数(即2的倍数)。因此,获得奇数最终总和的唯一方法是从最右边的数字中添加该奇数1。因此,如果我们好奇数字是奇数还是偶数,可以查看其二进制表示形式,并忽略除最右边的数字以外的所有内容。

为此,我们使用按位AND运算符。该值1以二进制表示为1

    0   0   0   1
    x   x   x   x
    8   4   2   1
    =   =   =   =
    0 + 0 + 0 + 1  =  1

如果设置了该值的最右边位,则将其与1该值进行“与”运算,1如果未设置,则将导致该值的最右位0

而且由于0在大多数语言中通常被认为是“ false”,而非零值则被认为是“ true”,因此我们可以简单地说一下:

if (value & 1): do_something_with_odd_value()...


 类似资料:
  • 问题内容: 我尝试搜索互联网,但找不到可哈希的含义。 当他们说物体是什么或什么意思? 问题答案: 从Python词汇表中: 如果对象的哈希值在其生命周期内始终不变(需要一个方法),并且可以与其他对象进行比较(需要一个方法),则该对象是可哈希的。比较相等的可哈希对象必须具有相同的哈希值。 散列性使对象可用作字典键和set成员,因为这些数据结构在内部使用散列值。 Python的所有不可变内置对象都是可

  • 问题内容: 在Python中像在C中一样具有特殊含义吗?我在Python Cookbook中看到了这样的函数: 你能向我解释一下还是指出我在哪里可以找到答案(Google将解释为通配符,因此我找不到令人满意的答案)。 问题答案: 假设知道位置和关键字参数是什么,下面是一些示例: 范例1: 如你在上面的示例中所见,函数签名中仅包含参数。由于d和k不存在,因此将它们放入字典。该程序的输出为: 范例2:

  • 问题内容: 我试图在Python 3.3中使用旧的库(可追溯至2003年!)。当我导入它时,Python抛出错误,因为源文件中有符号,例如: 我猜这是该语言现在被放弃的标志。 它到底是什么意思,我应该用哪个(较新的)符号代替? 问题答案: 这意味着不等于。它取自(python的前身)此处: 订单测试(表示 “不等于” ) 我相信它是从Pascal那里获得的,Pascal是Guido开始使用的语言。

  • 问题内容: 如PythonCookbook中所述,可以在元组之前添加。这是什么意思? 1.18章 将名称映射到序列元素: 123.45) 在同一部分中,提出: 这里的功能是什么? 问题答案: 表示“将此可迭代的元素作为此函数调用的位置参数进行处理”。 从v3.5开始,您还可以在列表/元组/设置文字中执行此操作: 表示“将字典中的键/值对作为此函数调用的其他命名参数进行处理”。 从v3.5开始,您还

  • 问题内容: python中以下语句的含义是什么: 是一个对象。以上有什么价值?那是什么类型呢? 问题答案: 如果 计算为,则x设置为,否则为 认为是

  • 问题内容: ←------为什么还有第二个论点? 问题答案: 字典的方法(例如,这里)有两个参数- 请参阅文档 第二个参数是什么返回如果第一个参数,是不存在的。(如果仅使用一个参数调用,则在没有该键的情况下会引发异常)。 在您的示例中,这是不相关的,因为它 是中 的键。但是,如果您重复该行…: 您会看到它有所不同:第一个删除了键,因此第二个实际上返回了参数(因为现在不存在)。