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*2

即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*2

即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
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 总结

前面看到了如何使用操作符符,操作数和表达式,这是程序的最为基本的构成。接下来,将会看到如何通过语句在程序中使用这些内容。

 




原创粉丝点击