Python基础概念_3_操作符与表达式
来源:互联网 发布:博雅软件集团2017 编辑:程序博客网 时间:2024/05/22 02:00
操作符与表达式
4 操作符与表达式
我们知道程序其实是代码段的组合,就像我们写的作文是一个个的段落堆积起来的,每一个段落又由句子组成,句子又包含“主谓宾定状补”。本章我们就来讲讲程序里的“句子”。
4.1 操作符
操作符是用于告诉解释器执行特定的数学或逻辑运算的符号表。这里最最容易理解的就数字运算符比如:+、-、*、/。Python支持的操作符有以下类型:
Ø 算术运算符
Ø 比较(关系)运算符
Ø 赋值运算符
Ø 逻辑运算符
Ø 位运算符
Ø 会员操作符
Ø 标识操作符
以下我们通过表格形式演示这些操作符的使用:
4.1.1 算术运算符
操作符
描述
例子
代码示例
+
加法:左侧操作数加右侧操作数
a + b
4+6
10
-
减法:左侧操作数右侧操作数
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=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
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=2a) 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
2+2**(8/4)
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_操作符与表达式
- SQL基础操作_3_数据字典
- [Python基础]运算符与表达式
- python表达式操作符与数学函数
- 零基础学python-5.2 数字表达式操作符
- Python表达式操作符
- Python的基础语法与概念
- 【python】python操作符&表达式
- 正则表达式 基础概念
- Python学习系列-----第二章 操作符与表达式
- 操作符与表达式
- 表达式与操作符
- 操作符与表达式
- python基础 表达式与选择结构
- python操作符和表达式
- Python中的操作符/表达式
- Python 正则表达式---概念基础,匹配过程,表达式元字符和语法以及实例
- python基础概念总结
- oracle的建表空间,imp导入导出,以及一些简单自我总结
- io流的输入,字节流inputStream,outputStream的输入与输出,字符流的输入与输出 FileInputStream,FileOutputStream
- html5 如何在ios 和安卓端视频全屏
- 全面详解Python与Ruby,到底哪款更优秀
- 第一次navalcat连接oracle数据库Cannot load OCI DLL 87: Instant Client package is required for Basic and TNS c
- Python基础概念_3_操作符与表达式
- 刷清橙OJ--A1074.线性运算
- Android轮播图的实现
- ruby中Proc、Lamba的区别
- Codeforces Young Physicist
- 记录生活---Android Studio环境搭建
- GridControl常用属性
- java.lang.ExceptionInInitializerError
- [Error] base operand of '->' has non-pointer type 'stac