Python编程基础与应用第4章 运算符_第1页
Python编程基础与应用第4章 运算符_第2页
Python编程基础与应用第4章 运算符_第3页
Python编程基础与应用第4章 运算符_第4页
Python编程基础与应用第4章 运算符_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4

运 算 符XXXX

大学XX

学院XXX

教授2学习目标:掌握算术与赋值运算符的使用掌握比较与逻辑运算符的使用掌握成员与身份运算符的使用熟悉三目、集合与位运算符的使用理解运算符的优先级理解计算思维过程及应用思政内涵:运算优先级的变化可能导致问题的解决结果截然不同,广大学子要善于抓住事物的主要矛盾,培养辩证思维能力。4章运算

符34.1 算术运算符算术运算符即数学运算符,用来对数字进行数学运算,其中+和*可以对字符串进行运算。表

4-1

列出了Python

支持的算术运算符及其功能描述与实例。表

4-1 算术运算符及其功能描述与实例运算符功能描述运算实例+数值加或字符串拼接7+2=9,"ab"+"cd"="abcd"-减7-2=5*数值乘或字符串重复7*2=14,"ab"*3="ababab"/除7/2=3.5//整除(只保留商的整数部分)7//2=3%取余(返回除法的余数)7%2=1**幂运算7**2=4944.1.1 加法运算符1.

数值加法当+用于数值时表示加法,加法运算很简单,和数学中的规则一样,示例代码如程序段P4.1

所示。P4.1

数值加法运算m=

10n=

97sum1=m+

nx=

7.2y=

15.3sum2=x+

yprint("sum1=%d,sum2=%.2f"%(sum1,sum2)

)4章运算

符5运行代码,输出结果如下。sum1=107,

sum2=22.502.

拼接字符串当+用于字符串时,有拼接字符串(将两个字符串连接为一个)的作用,示例代码如程序段P4.2

所示。P4.2

拼接字符串name

=

"python

语言学习网"url="/"age=

10info

=

name

+

"的网址是"

+

url

+",已经"

+

str(age)

+

"岁了。"print(info)6运行代码,输出结果如下。python

语言学习网的网址是/,已经

10

岁了。str()函数用来将整数类型的age

转换成字符串。乘法运算符数值乘法当*用于数值时表示乘法,乘法运算也和数学中的规则相同,示例代码如程序段P4.3

所示。P4.3

乘法运算n=4*

25f=34.5*

2print(n,",",

f)4章运算

符7运行代码,输出结果如下。100,

69.02.

重复字符串当*用于字符串时,表示重复字符串,即将多个同样的字符串连接起来。示例代码如程序段P4.4

所示。P4.4

重复字符串str1="hello"print(str1*

4)运行代码,输出结果如下。hellohellohello

hello8Python

中的算术运算符既支持相同类型的数值运算,也支持不同类型的数值混合运算。在进行混合运算时,Python

会强制对数值的类型进行临时类型转换。临时类型转换遵循如下原则。当整型与浮点型进行混合运算时,将整型转换为浮点型。当其他类型与复数类型进行运算时,将其他类型转换为复数类型。使用整型数据分别与浮点型数据和复数类型数据进行运算,示例代码如程序段P4.5

所示。P4.5

混合运算print(10/2.0)print(10-(3+5j))5.0运行代码,输出结果如下。7-5j4章运算

符94.2

赋值运算符赋值运算符用来把右侧的值传递给左侧的变量,可以直接将右侧的值赋给左侧的变量,也可以进行某些运算后再赋给左侧的变量。Python

中最基本的赋值运算符是=,结合其他运算符,=还能扩展出更强大的赋值运算符。表

4-2

列出了Python

支持的赋值运算符及其功能描述与实例。表

4-2 赋值运算符及其功能描述与实例运算符功能描述实例(x

是变量)=简单赋值运算符x=7+2,即将

7+2

的运算结果赋值给x+=加法赋值运算符x

+=7

等效于x=x+7-=减法赋值运算符x

-=7

等效于x=x-7*=乘法赋值运算符x

*=7

等效于x=x*710/=除法赋值运算符x

/=7

等效于x=x/7//=整除赋值运算符x

//=7

等效于x=x//7%=取模赋值运算符x

%=7

等效于x=x%7**=幂赋值运算符x

**=7

等效于x=x**74.2.1 基本赋值运算符符号=是Python

中最基本的赋值运算符,用来将一个表达式的值赋给另一个变量,支持连续赋值和多元赋值,示例代码如程序段P4.6

所示。P4.6

基本赋值、连续赋值和多元赋值n1=

100f1=

47.54章运算

符11s1=

"/python/"a=b=c

=

100 #

连续赋值x,y,z=1,2,

'a

string' #

多元赋值4.2.2

扩展赋值运算符扩展后的赋值运算符将使得赋值表达式的书写更加优雅和方便。但是,扩展赋值运算符只能针对已经存在的变量赋值,因为赋值过程中需要变量本身参与运算,如果没有提前定义变量,它的值就是未知的,无法参与运算。Python3.8

中新增了一个赋值运算符——海象运算符“∶=”,该运算符用于在表达式内部为变量赋值,因其形似海象的眼睛和长牙而得此名。海象运算符的用法示例代码如程序段P4.7

所示。12P4.7

海象运算符示例x=5sum=x+(y

:=10)print(sum)运行代码,输出结果如下。15

4.3 比较运算符比较运算符又称为关系运算符,用于对常量、变量或表达式的结果进行大小比较。如果这种比较是成立的,则返回

True(真);反之则返回

False(假)。表4-3

列出了Python

支持的比较运算符及其功能描述与实例。4章运算

符13表

4-3比较运算符及其功能描述与实例运算符功能描述实例(x=10,y=20)==等于——比较两个对象是否相等x==y

返回False!=不等于——比较两个对象是否不相等x!=y 返回True>大于——返回

x

是否大于yx>y

返回False<小于——返回

x

是否小于yx<y

返回True>=大于等于——返回

x

是否大于等于yx>=y

返回False<=小于等于——返回

x

是否小于等于yx<=y

返回True符号=和==是两个不同的运算符,=用来赋值,而==用来判断两边的值是否相等。所有比较运算符返回

1

表示真,返回

0

表示假。这分别与特殊的变量True

和False

等价。示例代码如程序段P4.8

所示。14P4.8

比较运算符x=10y=20print('x=10,y=20')print('x==y:',x==y)print('x!=y:',x!=y)print('x>y:',x>y)print('x<y:',x<y)print('x>=y:',x>=y)print('x<=y:',x<=y)运行代码,输出结果如下。x==y:

Falsex!=y:

True4章运算

符15x>y:

Falsex<y:Truex>=y:

Falsex<=y:

True

4.4 逻辑运算符数学中我们学过逻辑运算。例如,若p

为真命题,q

为假命题,那么“p与q”为假,“p

或q”为真,“非

q”为真。Python

中也有类似的逻辑运算,表

4-4

列出了Python

支持的逻辑运算符及其功能描述与实例。表

4-4 逻辑运算符及其功能描述与实例运算符功能描述实例(x=10,y=20)and逻辑与运算,如果x

为False,那么x

and

y

返x

and

y

返回

20,为True16回

False,否则返回y

的计算值or逻辑或运算,如果x

为非

0,那么x

or

y

返回x的计算值,否则返回y

的计算值x

or

y

返回

10,为Truenot逻辑非运算,如果x

True,那么not

x

返回False。如果

x

False,那么

not

x

返回Truenot

x

返回False逻辑运算符一般和比较运算符结合使用。例如,14>6

and

45.6

>

90,因为

14>6

结果为

True,45.6>90

结果为False,所以整个表达式的结果为

False。示例代码如程序段P4.9

所示。P4.9

逻辑运算符与比较运算符结合使用age

=

int(input("请输入年龄:"))height

=

int(input("请输入身高:"))if

age>=18

and

age<=30

and

height

>=170

and

height

<=

185

:4章运算

符17print("恭喜,你符合报考飞行员的条件")else:print("抱歉,你不符合报考飞行员的条件")运行代码,输入数据,输出结果如下。请输入年龄:23请输入身高:178恭喜,你符合报考飞行员的条件Python

逻辑运算符可以用来操作任何类型的表达式,不管表达式是不是bool

类型;同时,逻辑运算的结果也不一定是bool

类型,它也可以是任意类型。示例代码如程序段P4.10

所示。P4.10

数据类型的逻辑运算print(100and

200)18print(45and

0)print(""or"/python/")print(18.5or

"/python/")运行代码,输出结果如下。200 0 /python/

18.5由示例结果可知,and

和or

运算符会将其中一个表达式的值作为最终结果,而不是将

True

或False

作为最终结果。在Python

中,and

和or

不一定会计算右边表达式的值,有时只计算左边表达式的值就能得到最终结果。and

运算符执行规则对于and

运算符,当两边的值都为真时最终结果才为真,但是只要其中有一个值为假,那么最终结果就是假,因此,Python

按照下面的规则执行and运算。4章运算

符19(1)

如果左边表达式的值为假,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是假,此时

and

会把左边表达式的值作为最终结果。(2)

如果左边表达式的值为真,那么最终值是不能确定的,and

会继续计算右边表达式的值,并将右边表达式的值作为最终结果。2)

or

运算符执行规则对于or

运算符,情况是类似的,两边的值都为假时最终结果才为假,只要其中有一个值为真,那么最终结果就是真,因此,Python

按照下面的规则执行or

运算。如果左边表达式的值为真,那么就不用计算右边表达式的值了,因为不管右边表达式的值是什么,都不会影响最终结果,最终结果都是真,此时or

会把左边表达式的值作为最终结果。如果左边表达式的值为假,那么最终值是不能确定的,or

会继续计算20右边表达式的值,并将右边表达式的值作为最终结果。and

和or

运算规则的示例代码如程序段P4.11

所示。P4.11 and

和or

运算规则url=

"/python/"print("----Falseandxxx-----")print(Falseandprint(url)

)print("----Trueand

xxx-----")print(Trueandprint(url))print("----Falseorxxx-----")print(Falseorprint(url))print("----Trueorxxx-----")print(Trueorprint(url)

)4章运算

符21运行代码,输出结果如下。----Falseand

xxx-----False----Trueandxxx-----

http://www.ahu.net/python/

None----Falseorxxx-----

http://www.ahu.net/python/

None----Trueor

xxx-----True上例的第

4

行代码中,and

左边的值为假,不需要再执行右边的表达式,22因此

print(url)

没有任何输出。第

6

行代码中,and

左边的值为真,还需要执行右边的表达式才能得到最终的结果,因此

print(url)

输出了一个网址,同时

print()函数的返回值是None,True

and

None

表达式运算结果是None,因此输出None。第

8

和第

10

行代码也是类似的。逻辑运算符可以把多个条件按照逻辑进行连接,变成更复杂的条件。

4.5 成员运算符in

与not

in

是Python

中独有的运算符,称为成员运算符,用于判断对象是否为某个集合的元素之一,返回的结果是布尔值

True

或False。表

4-5

列出了Python

支持的成员运算符及其功能描述与实例。4章运算

符23表

4-5成员运算符及其功能描述与案例运算符功能描述实例in在指定的序列中找到了值返回True,否则返回False2

in

[1,2,3] 返回True5

in

[1,2,3] 返回Falsenot

in在指定的序列中没有找到值返回True否则返回

False,2

not

in

[1,2,3] 返回False5

not

in

[1,2,3] 返回True成员运算符的用法示例如程序段P4.12

所示。P4.12 成员运算符name

=

"小花"class_list

=

["小红","小花","小敏"]print(namein

class_list)print(namenotin

class_list)24运行代码,输出结果如下。TrueFalse

4.6 身份运算符身份运算符是Python

用来判断两个对象的存储单元是否相同的运算符号,身份运算符包括is

和is

not,返回的结果是True

或False。表4-6

列出了Python支持的身份运算符及其功能描述与实例。表

4-6 身份运算符及其功能描述与实例运算符功能描述实例(x=[1,2],y=[1,2]

)is判断两个变量是不是引用自一个对象,即内存地址是否一致。若是则返回

True,否则返回x

is

y,返回False4章运算

符25Falseis

not判断两个变量是不是引用自不同对象,即内存地址是否不一致。若是则返回True,否则返回Falsex

is

not

y,返回True注意,is

==

的区别如下:is

用于判断两个变量引用的对象是否为同一个,==

用于判断引用变量的值是否相等。示例代码如程序段P4.13

所示。P4.13 is

与==的运算区别x=[1,2,

3]y=[1,2,

3]z=

xprint("x

is

y:

",

x

is

y)print("z

is

x:

",

z

is

x)26print("x==y:",x==

y)print("z

==

x:

",

z

==

x)运行代码,输出结果如下。xis

y:zisx:x==

y:z==

x:FalseTrueTrueTrue

4.7 位运算符Python

位运算按照数据在内存中的二进制位(bit)进行运算,表

4-7

列出了Python

支持的位运算符及其功能描述与实例。4章运算

符27表

4-7位运算符及其功能描述与实例运算符功能描述实例x=0011

1100(60)y=0000

1101(13)&按位与运算符:参与运算的两个值,如果两个相应位都为

1,则该位的结果为

1,否则为

0(x

&

y)

输出结果

12二进制:0000

1100|按位或运算符:只要对应的两个二进位有一个为

1,结果位就为

1(x

|

y)

输出结果

61二进制:0011

1101^按位异或运算符:当两对应的二进位相异时,结果为1(x

^

y)

输出结果

49二进制:0011

0001~按位取反运算符:对数据的每个二进制位取反,即把1

变为

0,把

0

变为

1(~x

)

输出结果-61二进制:1100

0011,有符号二进制数的补码28形式<<左移动运算符:把<<左边的运算数的各二进位全部左移若干位,由<<右边的数指定移动的位数,高位丢弃,低位补

0x

<<

2

输出结果

240二进制:1111

0000>>右移动运算符:把>>左边的运算数的各二进位全部右移若干位,由>>右边的数指定移动的位数x

>>

2

输出结果

15二进制:0000

1111Python

位运算一般用于底层开发(算法设计、驱动、图像处理、单片机等),在应用层开发(Web

开发、Linux

运维等)中并不常见。不关注底层开发的读者先了解一下即可,待以后需要的时候再深入学习。

4.8 集合运算符在Python

中,集合被视为数学意义上的无序且无重复元素的集合,因此,4章运算

符29两个Python

集合可以做数学意义上的交集、并集等运算操作。表

4-8

列出了Python

支持的集合运算符及其功能描述与实例。表

4-8 集合运算符及其功能描述与实例运算符功能描述实例A={1,2,3,4,5}B={1,3,5,7,9,11}&交集,交集符号有一个等价的方法:intersection()A&B={1,3,5}|并集,并集符号有一个等价的方法:union()A|B={1,2,3,4,5,7,9,11}-差集,差集符号有一个等价的方法:difference()A-B={2,4}对称差分,新集合的元素只能属于集合A

或集合B,^不能同时属于两个集合。对称差分符号有一个等价的A^B={2,4,7,9,11}方法:symmetric_difference()30运算符功能描述实例A={1,2,3,4,5}B={1,3,5,7,9,11}&=两个集合的交集A&=B,A={1,3,5}|=为集合添加一个或多个成员,与update

方法等价A|B ,A={1,2,3,4,5,7,9,11}-=删除集合中的一个或多个成员A-=B,A={2,4}^=更新集合中的元素,使得其中的元素只属于原集合s或仅是另一个集合

s1

中的成员。此运算符与方法symmetric_difference_update()等价A^=B,A={2,4,7,9,11}4章运算

符314.9

三目运算符Python

是一种极简主义的编程语言,使用已有的

if、else

关键字来实现三目运算符的功能。三目运算符也称为三元运算符(条件运算符)。Python

中三目运算符的语法格式如下。res=exp1if

conditionelseexp2上式中,condition

是判断条件,exp1

和exp2

是两个表达式。当条件condition

为真时,res

=

表达式exp1

的运算结果。当条件condition

为假时,res

=

表达式exp2

的运算结果。示例代码如程序段P4.14

所示。P4.14

三目运算x

=

int(

input("输入数字x:")

)32y

=

int(

input("输入数字y:")

)print(x+y

if

x>y else

x-y)运行代码,输入数字,输出结果如下。输入数字x:5输入数字y:49再运行代码,输入数字,输出结果如下。输入数字x:5输入数字y:8-3Python

三目运算符也可以嵌套使用,嵌套三目运算符的语法格式如下。res

=

a

if

a>b

else

(

c

if

c>d

else

d

)4章运算

符33当条件a>b

为真时,res

=

a。当条件a>b

为假时,继续判断条件

c>d,若为真则

res

=

c,若为假则

res=

d。示例代码如程序段P4.15

所示。P4.15

嵌套三目运算a

=

int(

input("输入数字a:")

)b

=

int(

input("输入数字b:")

)print("a

大于b")

if

a>b

else

(

print("a

小于b")

if

a<b

else

print("a

等于b")

)运行代码,输入数字,输出结果如下。输入数字a:3输入数字b:1a

大于b34再运行代码,输入数字,输出结果如下。输入数字a:3输入数字b:6a

小于b再运行代码,输入数字,输出结果如下。输入数字a:3输入数字b:3a

等于b

4.10 运算符优先级Python

支持使用多个不同的运算符连接简单表达式实现相对复杂的功能,为了避免含有多个运算符的表达式出现歧义,Python

为每种运算符都设定了优4章运算

符35先级。Python

中运算符按优先级从高到低排序,如表

4-9

所示。表

4-9 运算符优先级运算符描述**幂*、/、%、//乘、除、取模、整除+、-加法、减法>>、<<按位右移、按位左移&按位与^、|按位异或、按位或==、!=、>=、>、<=、<比较运算符is、is

not身份运算符in、not

in成员运算符36not、and、or逻辑运算符=赋值运算符需要说明的是,如果表达式中的运算符优先级相同,则按从左向右的顺序执行;如果表达式中包含括号,那么解释器会先执行括号中的子表达式。

4.11

计算思维运算符表示对数据进行加工处理的方法。通过运算符的运算能得到确定结果的问题,都可以通过计算机强大算力的计算得到解决。若要利用计算机算力解决问题,就必须要用计算机能理解的符号或模型把问题描述出来。如何描述问题?需要利用我们人类大脑的复杂思维活动来描述,这种思维活动称为计算思维。计算思维是建立在算力基础上的一种思维方式。在数字时代,算力已经成为基础生产力,在算力基础上解决实际问题是较为普遍的事情,因此计算思维是人人都需要具备的一种思维能力。4章运算

符37计算思维(computational

thinking)是周以真(JeannetteMarie

Wing)教授于

2006

年首次提出的概念。计算思维是运用计算机科学的基础概念进行问题求解、系统设计、人类行为理解等涵盖计算机科学广度的一系列思维活动。计算思维是与形式化问题及其解决方案相关的思维过程,其解决问题的表现形式应该能有效地被信息处理代理执行。计算思维建立在计算过程的能力和限制之上,由人与机器执行。计算方法和模型使人们敢于去处理那些原本无法由任何个人独自完成的问题求解和系统设计。计算思维对其他学科的研究产生了深刻的影响。例如,计算生物学正在改变着生物学家的思考方式;计算博弈理论正在改变着经济学家的思考方式;纳米计算正在改变着化学家的思考方式;量子计算正在改变着物理学家的思考方式。计算思维也渗透到了普通人的生活之中,掌握计算思维已经成为现代人应具备的基本技能。计算思维已经成为现代人解决问题的基本思维方法,并且已成为各专业学生都应掌握的思维方式。掌握计算思维,有助于人们更好地从事38医学、法律、商业、政治工作,以及其他任何类型的科学和工程,甚至艺术工作。计算思维过程计算思维是一种解决问题的方式,它并不等同于计算机科学。计算思维是一种递归思维,通过分解、识别、抽象、算法不断地递归迭代思维活动,把要解决的问题形式化、符号化。计算思维包括问题分解、模式识别、归纳抽象、算法设计

4

部分内容。问题分解当我们面临一个复杂的事物时,一般很难直接处理,此时可以先将其分解成许多小事物,逐个进行处理,小事物处理完后,复杂的事物也就处理好了。因此,计算思维的第一步就是把实际领域、项目、对象、过程或问题等事物分4章运算

符39解成更小且易于识别的部分,分解出事物的组成要素及结构关系。实践中,这往往需要多次反复迭代才能完成。例如,当一台计算机出现故障时,可以将计算机逐步分解成较小的组成部件,再对各个部分进行检查。又如,当程序员在调试程序过程中遇到问题时,通常会考虑各种可能性,然后把程序分解成各个组成部分,分别进行问题排查。事实上,问题分解已经成为人类的基本思维模式。2.

模式识别将一个复杂的事物分解之后,就要去识别、发现小事物的相似之处与共同的属性,以及发展变化趋势和规律,这些属性、趋势和规律称为模式。模式识别就是在众多事物中找出特征或规则,并对事物进行识别与分类。在解决问题的过程中找到模式是非常重要的。模式可以让问题简单化。例如,程序员在调40试程序时,根据错误的特征,依据大脑中存储的经验,常常可以识别出错误的模式,找到程序出错的原因。归纳抽象归纳抽象的目的是忽略次要特征,将注意力集中在重要特征上,以发现、识别模式背后的一般原理和本质因素,构建解决问题的限制及规则,并进行符号化、形式化描述。例如,程序员在识别出程序错误的模式后,就可以抽象描述这种错误模式,并对其进行形式化、符号化定义。这样,当下次出现类似的错误时,计算机就可以自动检测出来。Python

中的异常自动报错就是为了实现这样的设计。算法设计算法就是计算机运算的流程控制,它是人类利用计算机解决问题的基本方法,是把问题描述转换为计算机程序的基础。算法是一种选择,是一种计划,4章运算

符41每一个指示与步骤都是精心计划过的,这个计划中包含解决问题的每一个状态。例如,第

3

章的“剪刀、石头、布”游戏,通过问题分解、模式识别、归纳抽象

3

个步骤将问题描述形式化、符号化,便可进行算法设计。算法设计的条件及功能描述,如表

4-10

所示。表

4-10 算法设计的条件及功能描述条件功能描述输入零个或多个输入数据,输入数据必须有清楚的描述或定义输出至少要有一个输出结果,不可以没有输出结果确定性每个语句或步骤必须是明确的有限性在有限步骤后一定会结束,不会产生无穷回路有效性步骤清楚可行,可以通过计算求出答案42算法可以用一般文字(如中文、英文和数字等)进行描述,也可以用计算机高级语言(Python、C\C++等)或虚拟语言(Pascal、Spark

等)进行描述。人机大战猜拳游戏计算思维分析对第

3

章的人机大战猜拳游戏进行计算思维分析的过程如下。问题分解人机大战猜拳游戏要解决的是输赢问题,可将问题分为三部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论