Python基础概念_3_操作符与表达式
操作符与表达式
4 操作符与表达式
我们知道程序其实是代码段的组合,就像我们写的作文是一个个的段落堆积起来的,每一个段落又由句子组成,句子又包含“主谓宾定状补”。本章我们就来讲讲程序里的“句子”。
4.1 操作符
操作符是用于告诉解释器执行特定的数学或逻辑运算的符号表。这里最最容易理解的就数字运算符比如:+、-、*、/。Python支持的操作符有以下类型:
Ø 算术运算符
Ø 比较(关系)运算符
Ø 赋值运算符
Ø 逻辑运算符
Ø 位运算符
Ø 会员操作符
Ø 标识操作符
以下我们通过表格形式演示这些操作符的使用:
4.1.1 算术运算符
操作符 |
描述 |
例子 |
代码示例 |
+ |
加法:左侧操作数加右侧操作数 |
a + b |
4+6 |
- |
减法:左侧操作数右侧操作数 |
a - b |
10-20 -10 |
* |
乘法:左侧操作数乘右侧操作数 |
a * b |
10*2 20 |
/ |
除以:左侧操作数除以右侧操作数 |
b / a |
6/2 3 |
% |
取模:左侧操作数除右侧操作数的余值 |
b % a |
5%2 1 |
** |
幂运算- 执行对操作指数(幂)的计算,操作符前是底数,后是指数 |
a**b |
2**3 8 |
// |
地板除:左侧操作数除右侧操作数得到的 一个整数或则尾数带0的浮点数(这个数字乘以右操作数最接近左侧操作符) |
a//b |
9.9//2.0 4.0 9.1//2.3 3.0 9.2//2.3 4.0 9//2 4 |
- |
负数:是一个数的负数 |
-a |
-1 1 --1 1 |
4.1.2 比较运算符
运算符 |
描述 |
示例 |
代码示例 |
== |
等于:判断两个操作数的值是否相等,相等则返回True(真)反则则反。 |
a==b |
2==2 True |
!= |
不等于:判断两个操作数的值是否不等,不等则返回True(真)反则则反。 |
a!=b |
2!=3 True |
> |
不于:判断左侧操作数是否相等大于右侧操作数,大于则返回True(真)反则则反。 |
a>b |
2>3 False |
< |
小于:判断左侧操作数是否相等小于右侧操作数,小于则返回True(真)反则则反。 |
a<b |
2<3 True |
>= |
大于等于:判断左侧操作数是否相等大于等于右侧操作数,大于等于则返回True(真)反则则反 |
a>=b |
2>=3 False |
<= |
小于等于:判断左侧操作数是否相等小于等于右侧操作数,小于等于则返回True(真)反则则反 |
a<=b |
2<=3 True |
4.1.3 赋值运算符
运算符 |
描述 |
示例 |
运算符 |
= |
赋值:将右侧操作数赋值给左侧的操作数 |
c = a + b |
c=2+3 print(c) 5 |
+= |
加赋值:加赋值操作符,左侧操作数与右侧操作数和的结果再赋给左侧操作数 |
c += a 注: 相当于c = c + a |
c=1 c+=2 print(c) 3 |
-= |
减赋值:减赋值操作符,左侧操作数与右侧操作数差的结果再赋给左侧操作数 |
c -= a |
c=1 c-=2 print(c) -1 |
*= |
乘赋值:乘赋值操作符,左侧操作数与右侧操作数乘的结果再赋给左侧操作数 |
c *= a 注:相当于c =c *a |
c=2 c*=3 print(c) 6 |
/= |
除赋值:除赋值操作符,左侧操作数与右侧操作数相除的结果再赋给左侧操作数 |
c /= a 注:相当于c=c/a |
c=6 c/=2 print(c) 3 |
%= |
模赋值:模赋值操作符,左侧操作数与右侧操作数模的结果再赋给左侧操作数 |
c %= a 注:相当于c =c %a |
c=5 c%=2 print(c) 1 |
**= |
幂赋值:幂赋值操作符,左侧操作数的右侧操作数次幂的结果再赋给左侧操作数 |
c **= a 注:相当于c =c**a |
c=2 c**3 print(c) 8 |
//= |
地板除赋值:模赋值操作符,左侧操作数与右侧操作数地板除的结果再赋给左侧操作数 |
c //= a 注:相当于c = c // a |
c=9.1 c//2.3 print(c) 3.0 |
4.1.4 逻辑运算符
运算符 |
描述 |
示例 |
运算符 |
and |
与:如果两个操作数都是真的则真。反之则反。 |
a and b |
1 and 0 (1>2) and (2<3) False |
or |
或:如果有两个操作数有一个真则真。都假则为假 |
a or b |
1 or 0 1 (1>2) or 2<3) True |
not |
非:对逻辑运算符取反,真的反为假,假的反为真。 |
not a |
not 0 True not 1 False not (1>2) True |
4.1.5 位运算符
在演示位运算符号前,我们先假设有两个数 a =60、b=13; 它们以二进制标识如下:
a的二进制结构0011 1100
二进制转十进制:0*20+0*21+1*22+1*23+1*24+1*25
即0*2**0+0*2**1+1*2**2+1*2**3+1*2**4+1*2**5
b的二进制结构0000 1101
二进制转十进制:1*20+0*21+1*22+1*23
即1*2**0+0*2**1+1*2**2+1*2**3
那么
a) a&b
a&b = 0000 1100是怎么运算的呢?
运算详解:a和b的二进制对应位两两取与。
a) a|b
同理a|b是a和b的二进制对应位两两或,即得到a|b=0011 1101
b) a^b
这里是异或,即a和b的二进制对应位相同的则返回0,不同则为1,所以a^b = 0011 0001
c) ~a
这里是取反,即a的二进制对应位取反。所以~a = 1100 0011
d) a<<2
这里是左位移符号,即a的二进制都向右移动二位。所以是a<<2=2
a) a>>2
这里是右位移符号,即a的二进制都向左移动二位。所以是a>>2=15
注:参考e)即可推断出该值。
操作符 |
描述 |
示例 |
代码示例 |
& |
位与:二进制对应位进行与操作 |
(a & b) = 12 即 0000 1100 |
a=60 b=13 a&b 12 |
| |
位或:二进制对应位进行或操作 |
(a | b) = 61 即 0011 1101 |
a=60 b=13 a|b 61 |
^ |
位异或:二进制对应位进行异或操作。 |
(a ^ b) = 49 即 0011 0001 |
a=60 b=13 a^b 49 |
~ |
位取反:二进制对应位进行取反操作。 |
(~a ) = -61 即 1100 0011以2的补码形式由于带符号二进制数。 |
a=60 ~a -61 |
<< |
左移位:左操作数的值左移由右操作数指定的位数。 |
a << 2 = 240 即 1111 0000 |
a<<2 240 |
>> |
右移位:右操作数的值右移由右边操作数指定的位数。 |
a >> 2 = 15 即 0000 |
a>>2 15 |
4.1.6 会员操作符
操作符 |
描述 |
示例 |
代码示例 |
in |
成员存在:判断一个元素是否存在某个数据结构内,存在返回True,否则False。 |
x in y |
'python' in ['python','xiaodao'] True |
not in |
成员不存在:判断一个元素是否存在某个数据结构内,不存在返回True,否则False。 |
x not in y |
'python' not in ['python','xiaodao'] False |
4.1.7 标识操作符
运算符 |
描述 |
例子 |
运算符 |
is |
同一运算符:判断两个变量是不是一个,是则返回True,否则为False。 |
x is y |
x = y = [4,5,6] z = [4,5,6] x is y True |
is not |
非同一运算符:判断两个变量是不是一个,不是则返回True,否则为False。 |
x is not y |
x = y = [4,5,6] z = [4,5,6] x is not z True |
4.2 操作符优先级
在开始本章节之前让我们先回顾一下两头小羊过河的故事:
一天,两只小羊在独木桥前相遇,小白羊说:“让我先过去!”
“不对,应该让我先过去!”小黑羊大叫道。
小白羊很生气,它用角去顶小黑羊,小黑羊也不甘示弱,冲了上去,两只羊互不相让。
小白羊想:我的毛洁白无瑕,比你高贵,应该让我先过去。小黑羊想:我的力气比你大,肯定能战胜你。“扑通”一声,两只小羊同时掉下了水。
这个故事当然是教育我们要谦让,引入这个故事是要提到另外一点:优先级。通过上面章节的学习我们了解了7类常用的操作符,显然这些操作符是组合在一起用的。那么哪些操作符先执行,哪些后执行呢?我们来看Python里对操作符优先级的定义:
运算符通常是从左往右结合的,例如,有相同优先级的运算符按照从左向右的顺
序计算。例如,2+3+4 的顺序是(2+3)+4。一些运算符,如赋值运算符有从右向左的
结合顺序,例如a=b=c 被当成a=(b=c) 。
操作符优先级由高到低排列见下表:
运算符 |
描述 |
程序示例 |
** |
幂 |
2+2**6/4 18.0 6.0 |
~ + - |
补码,正负号 |
|
* / % // |
乘,除,取模和地板除 |
|
+ - |
加法和减法 |
|
>> << |
左,右按位转移 |
|
& |
位与 |
|
^ | |
按位异'或`'和定期`或' |
|
<= < > >= |
比较运算符 |
|
<> == != |
等式运算符 |
|
= %= /= //= -= += *= **= |
赋值运算符 |
|
is is not |
标识运算符 |
|
in not in |
成员运算符 |
|
not or and |
逻辑运算符 |
注:当然我们可以通过()来改变优先级
4.3 表达式
表达式就像我们作文中的加了修饰的词,比如晴朗的天空。它一般有变量、操作符组成。比如我们计算一个矩形的面积可以这样做:
代码示例:
length = 5
breadth = 2
area = length * breadth
print('面积是', area)
面积是 10
print('周长是',2 * (length+ breadth))
周长是 14
4.4 总结
前面看到了如何使用操作符符,操作数和表达式,这是程序的最为基本的构成。接下来,将会看到如何通过语句在程序中使用这些内容。
Python基础概念_3_操作符与表达式相关推荐
- 8.Python基础学习笔记day8-正则表达式、网络编程、进程与线程
8.Python基础学习笔记day8-正则表达式.网络编程.进程与线程 一.正则表达式 ''' 1. [1,2,3,4]中任意取3个元素排列: A43 = 4x3x2 = 24itertools.pe ...
- Python基础概念_14_常见术语
常见术语 15 常见术语 15.1 简介 Python里有一些常见的专业名词.用语,我们一般统称为术语.为了更方便的学习python我们通过表格的方式列举了常用的术语和单词以及工具. 15.2 常见术 ...
- Python基础概念_8_字符串处理
字符串处理 9 字符串处理 9.1 简介 在前面的章节里我们介绍了常用的数据类型,其中字符串并没有单独拎出来讲,那么接下来我们将重点讲下它.字符串一般是通过引号('或")包裹起来的,因为它有 ...
- 刻意练习:Python基础 -- Task05. 函数与Lambda表达式
背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...
- 原python基础概念整理_Python从头学之基础概念整理
学程序真的是一个无法间断的过程,只要你懈怠,种种原因都是你的理由.然而造成的后果就是到目前位置,一个心目中的项目都没有完美的做出来: 归根结底,其实就是基础没有打好,因为每一个复杂的功能都是由很多简单 ...
- Python基础概念_2_基础概念
基础概念 3 基础概念 3.1 数字 计算机最初设计时就是为了做数据运算的,所以针对这个概念应该不会陌生.在Python的世界里数主要有三种类型: 整数.浮点数和复数,详见下例: a) 5 是一个整数 ...
- python核心理念_《三天搞定Python基础概念之第一天》中文版
前言: 首先,非常感谢Jiang老师将其分享出来!本课件非常经典! 经过笔者亲测,竟然确实只要三天,便可管中窥豹洞见Python及主要库的应用.实属难得诚意之作! 其次,只是鉴于Jiang老师提供的原 ...
- learnpythonthehardway中文版_《三天搞定Python基础概念之第一天》中文版
前言: 首先,非常感谢Jiang老师将其分享出来!本课件非常经典! 经过笔者亲测,竟然确实只要三天,便可管中窥豹洞见Python及主要库的应用.实属难得诚意之作! 其次,只是鉴于Jiang老师提供的原 ...
- Python基础概念_12_编程风格
编程风格 13 编程风格 13.1 简介 为了编程的规范,我们一般约定一些编程规则.约定,这些都称为编程风格. 13.2 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 13.3 行长度 ...
最新文章
- moss管理中心崩溃之解决
- 如何将 backordered 的SO# 重新发运?
- docsify——一个神奇的文档站点生成器
- 英雄联盟手游锐雯有多么强大,新手教程全给你,瑞文很简单
- php商城的购物车功能,php实现购物车功能(以大苹果购物网为例)
- 盖瑞特金属探测门受多个严重漏洞影响,可遭篡改
- 51单片机c语言xdata,新概念51单片机c语言教程ppt
- 流密码:lfsr(线性反馈移位寄存器)
- JAVA UDP 发送和接收数据
- kali2022安装AWVS
- 教了一年少儿编程,说说感想和体验
- 不买服务器,使用网络通免费发布网站到外网
- 过滤汉字和特殊字符的正则表达式
- 程序员遇到有远见的丈母娘
- 发送打印命令后打印机没反应,重启打印机之后才能打印
- 为什么Mendix重视私有化部署
- 数据库配置口令复杂度策略和口令有效期策略
- android系列:第一篇 android开发常用命令集合,代码目录简介
- 2021年全球与中国氮气服务车行业市场规模及发展前景分析
- 比较好的跨境电商ERP软件都有哪些?哪个亚马逊ERP工具比较好用?
热门文章
- wxHtml 示例:演示虚拟文件系统功能
- wxWidgets:wxKeyEvent类用法
- boost::type_erasure::ostreamable相关的测试程序
- boost::shared_future相关的测试程序
- boost::execution_monitor相关的测试程序
- boost::interprocess::offset_ptr用法的测试程序
- boost::graph::isomorphism用法的测试程序
- boost::geometry::correct用法的测试程序
- boost::filesystem模块打印文件的大小的测试程序
- boost::json模块实现远程过程调用的测试程序