专栏首页Crossin的编程教室#PY小贴士# 别弄错了 Python 里的这几个运算符

#PY小贴士# 别弄错了 Python 里的这几个运算符

有人问过这样的问题:

为什么我求圆的面积,结果不对?

r = 10
s = 3.14 * (r ^ 2)
print(s)

还有人问过这样的问题:

为什么判断两个并列条件时结果不对?

a = 6
if a > 1 & a < 3:
    print('符合条件')

会出现这样问题的同学,多半是之前用过其他的编程语言,所以习惯性地认为 ^ 是表示次方,& 是表示逻辑与(同时满足条件)、| 是表示逻辑或(满足条件之一)。

可惜在 Python 中,以上全错!

在 Python 中,这3个都属于同一类符号:位运算符。位运算符是把数字转成二进制来按位进行类似逻辑的运算。

比如 & 按位与运算符:参与运算的两个值,如果二进制的对应位都为 1,则该位的结果为 1,否则为 0。示例:

a = 3    # 0011
b = 5    # 0101
c = a & b    # 0001
print(c)

c 的运算结果是 0001,转回十进制,输出就是 1。

类似的,| 是按位或运算符:只要二进制的对应位有一个为 1,结果位就为 1,否则为 0。示例:

a = 3    # 0011
b = 5    # 0101
c = a & b    # 0111
print(c)

c 的运算结果是 0111,转回十进制,输出就是 7。

^ 要稍复杂一点,是按位异或运算符:当二进制的对应位不相同时,结果为 1,相同则为 0。示例:

a = 3    # 0011
b = 5    # 0101
c = a & b    # 0110
print(c)

c 的运算结果是 0110,转回十进制,输出就是 6。

一般来说,你在学习中几乎不会用到位运算符,所以了解下即可。

那么,最开始的两段代码,如果要实现,正确的符号应该是什么?

Python 中的次方是 ** 符号,r 的平方就是 r ** 2

而逻辑上的分别是 and or


本文分享自微信公众号 - Crossin的编程教室(crossincode),作者:PY小贴士

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 中的神秘运算符

    今天我们来讲讲 Python 里一个不为众人所知的运算符。你可能会觉得疑惑:还有我不知道的运算符?别急着下结论,先往下看看再说。

    Crossin先生
  • 刷票有风险,抢购需谨慎

    今天听说了一件令广大程序员大跌眼镜的事情:某知名互联网企业在中秋节前搞了个内部活动,抢购月饼。有些工程师写了程序脚本自动去抢,其中有几位一不小心刷多了。然后,就...

    Crossin先生
  • 【我问Crossin】Python web 该如何入门?

    1 如何在 Python 中判断字符编码类型? 使用 chardet 库可以检测 >>>import chardet >>>l = b'\xc3\x83\xc3...

    Crossin先生
  • 娱乐八卦号们怎么办?域名帮你找答案

    近日在微博上,“中国第一狗仔卓伟”、“八卦_我实在是太CJ了”等多个知名八卦新浪微博账号被封。

    躲在树上的域小名
  • 从伪并行的 Python 多线程说起

    学过操作系统的同学都知道,线程是现代操作系统底层一种轻量级的多任务机制。一个进程空间中可以存在多个线程,每个线程代表一条控制流,共享全局进程空间的变量,又有自己...

    py3study
  • 《挑战30天C++入门极限》C++运算符重载函数基础及其值返回状态

      除此之外,c++也规定了一些运算符不能够自定义重载,例如.、::、.*、.->、?:。   下面我们来学习如何重载运算符,运算符重载函数的形式是: ...

    landv
  • 【开源公告】多平台Web自动化测试框架QT4W开源

    QT4W (Quick Test for Web)是使用Python开发的Web自动化框架,是QTA(QTA是一套集成面向多端多平台的自动化测试解决方案,包括...

    腾讯开源
  • Nginx系列教程(6)Nginx location 匹配规则详细解说

    Nginx 的 location 实现了对请求的细分处理,有些 URI 返回静态内容,有些分发到后端服务器等,今天来彻底弄懂它的匹配规则

    haikangweishi
  • docker学习系列20 工具推荐,dive 分析镜像层的工具

    在 Docker 学习系列17 镜像和容器的导入导出 我讲过docker镜像是由一层层组成的 比如如下dockerfile文件

    mafeifan
  • Python 容器使用的 5 个技巧和 2 个误区

    在 Python 中,有四类最常见的内建容器类型: 列表(list)、 元组(tuple)、 字典(dict)、 集合(set)。通过单独或是组合使用它们,可以...

    一墨编程学习

扫码关注云+社区

领取腾讯云代金券