【问题标题】:What do these operators mean (** , ^ , %, //)? [closed]这些运算符是什么意思(**、^、%、//)? [关闭]
【发布时间】:2013-02-18 02:10:36
【问题描述】:

除了标准的+-*/运算符;但是这些是什么意思(**^%//)?

>>> 9+float(2) # addition
11.0
>>> 9-float(2) # subtraction
7.0
>>> 9*float(2) # multiplication
18.0
>>> 9/float(2) # division
4.5
>>>
>>> 9**float(2) # This looks like a square, (i.e. power 2) 
81.0
>>> 9**float(3) # So ** is equivalent to `math.pow(x,p)` ?
729.0

^ 运算符怎么样?

>>> 9^int(2) # What is `^` in `x^u` , it only allows `int` for `u`
11
>>> 9^int(3)
10
>>> 9^int(4)
13
>>> 9^int(5)
12
>>> 9^int(6)
15
>>> 9^int(7)
14
>>> 9^int(8)
1
>>> 9^int(9)
0
>>> 9^int(10)
3
>>> 9^int(11)
2
>>> 9^int(12)
5

x%m 中的% 返回一个正常的余数模数,但前提是m < x,为什么会这样? % 是做什么的?

>>> 9%float(2)
1.0
>>> 9%float(3)
0.0
>>> 9%float(4)
1.0
>>> 9%float(5)
4.0
>>> 9%float(6)
3.0
>>> 9%float(7)
2.0
>>> 9%float(8)
1.0
>>> 9%float(9)
0.0
>>> 9%float(10)
9.0
>>> 9%float(11)
9.0
>>> 9%float(12)
9.0

// 运算符怎么样?它有什么作用?

>>> 9//float(2)
4.0
>>> 9//float(3)
3.0
>>> 9//float(4)
2.0
>>> 9//float(5)
1.0
>>> 9//float(6)
1.0
>>> 9//float(7)
1.0
>>> 9//float(8)
1.0
>>> 9//float(9)
1.0
>>> 9//float(1)
9.0
>>> 9//float(0.5)
18.0

【问题讨论】:

  • 我觉得你已经回答了自己的问题。
  • 如果你用 Google 搜索“python 运算符”,第一个链接就是很好的运算符列表。
  • 如果您对所链接的文档有具体问题,请引用您不理解的部分并询问。
  • 所有这些都是算术 (**,%,//) 和位 (^) 运算符 - Python operators are discussed in details here
  • "很难说出这里问的是什么。这个问题是模棱两可、含糊不清、不完整、过于宽泛或修辞的,无法以目前的形式合理回答。请帮助澄清这个问题,以便它可以重新打开”——但它有 64 次投票和 32 次书签(截至撰写本文时)。 1 个答案有 122 个赞成票,另外 10 个,最后一个有 36 个。问题仍然是关闭的。我带着一个关于“//”的问题来到这里并找到了答案。

标签: python math operators native


【解决方案1】:
  • **: 求幂
  • ^:异或(按位)
  • %:模数
  • //:除以整数结果(丢弃余数)

【讨论】:

    【解决方案2】:

    ** 是幂函数是正确的。

    ^ 是按位异或。

    % 确实是模运算,但请注意,对于正数,x % m = x 每当m > x 时。这是从模数的定义得出的。 (另外,Python 指定x % m 具有m 的符号。)

    // 是一个除法运算,通过丢弃余数返回一个整数。这是在大多数编程语言中使用/ 的标准除法形式。然而,Python 3 改变了/ 的行为以执行浮点除法即使参数是整数// 运算符是在 Python 2.6 和 Python 3 中引入的,以提供在 Python 2 和 Python 3 之间表现一致的整数除法运算符。这意味着:

    | context                                | `/` behavior   | `//` behavior |
    ---------------------------------------------------------------------------
    | floating-point arguments, Python 2 & 3 | float division | int divison   |
    ---------------------------------------------------------------------------
    | integer arguments, python 2            | int division   | int division  |
    ---------------------------------------------------------------------------
    | integer arguments, python 3            | float division | int division  |
    

    更多详情请看这个问题:Division in Python 2.7. and 3.3

    【讨论】:

    • 值得注意的是,x % m 总是给出带有m 符号的结果。
    • @HyperNeutrino 谢谢。我最初只对解释 OP 所询问的具体情况感兴趣,但由于这个答案已经变得更加笼统,我为此添加了一条注释。
    • @HyperNeutrino ...在您的评论中,“x % m 总是给出带有 m 符号的结果”,请详细说明“m 的符号”。那到底是什么样子的?我很难理解它。谢谢!
    • @Jeremy 如果m 是肯定的,那么答案就是肯定的。例如,5 % 32,但 -5 % 31,而不是 -2m 的类似情况是负面的。这与我相信的某些语言(例如 Java)的工作方式不同。
    • @HyperNeutrino ...哦! “符号”为正 (+) 或负 (-)。谢谢!
    【解决方案3】:

    您可以在Python language reference 中找到所有这些运算符,但您必须滚动一下才能找到它们。正如其他答案所说:

    • ** 运算符进行幂运算。 a ** ba 提升到 b 幂。相同的 ** 符号也用于函数参数和调用符号,具有不同的含义(传递和接收任意关键字参数)。
    • ^ 运算符执行二进制异或。 a ^ b 将返回一个值,其中仅包含在 ab 中设置的位,但不能同时在两者中设置。这个很简单!
    • % 运算符主要用于求两个整数的模。 a % b 返回 a 除以 b 后的余数。与其他一些编程语言(例如 C)中的模运算符不同,在 Python 中,模数将与 b 具有相同的符号,而不是与 a 相同的符号。相同的运算符也用于字符串格式的“旧”样式,因此如果a 是格式字符串并且b 是可以插入的值(或值的元组),a % b 可以返回一个字符串a
    • // 运算符执行 Python 版本的整数除法。 Python 的整数除法与其他一些语言(如 C)提供的整数除法并不完全相同,因为它向负无穷而不是向零舍入。与模运算符一起,您可以说a == (a // b)*b + (a % b)。在 Python 2 中,除法是两个整数相除时的默认行为(使用普通除法运算符 /)。由于这可能是出乎意料的(尤其是当您对作为函数参数的数字类型并不挑剔时),Python 3 已更改为使“真”(浮点)除法成为四舍五入的除法规范否则,它只会在明确要求时进行“地板”除法。 (您还可以通过将 from __future__ import division 放在文件顶部来获得 Python 2 中的新行为。我强烈推荐它!)

    【讨论】:

    • %:不仅符号不同,绝对值也不同!
    • 感谢这些现场描述,尤其是模数和整数除法运算符。
    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 2021-12-18
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2010-12-30
    相关资源
    最近更新 更多