Python程序设计与案例教程417_第1页
Python程序设计与案例教程417_第2页
Python程序设计与案例教程417_第3页
Python程序设计与案例教程417_第4页
Python程序设计与案例教程417_第5页
已阅读5页,还剩410页未读, 继续免费阅读

下载本文档

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

文档简介

第1章程序设计基础与Python概述Python程序设计与案例教程1.1程序设计与程序设计语言1.程序设计与计算思维程序设计:给出解决特定问题程序的过程,以某种程序设计语言为工具,并在这种语言下编写程序。计算思维:运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。1.1程序设计与程序设计语言2.程序设计语言机器语言:用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合,形式上是由“0”和“1”构成的一串二进制代码。例如,计算1+2的机器语言程序:1011000000000001;0000010000000010;11110100;1.1程序设计与程序设计语言2.程序设计语言汇编语言:采用了有助于记忆的符号(称为指令助记符)与符号地址来代替机器指令中的操作码和操作数。例如,计算1+2的汇编语言程序:MOVAL,1 ;ADDAL,2 ;HLT ;1.1程序设计与程序设计语言2.程序设计语言高级语言:是更接近自然语言、数学语言的程序设计语言,是面向应用的计算机语言,与具体的机器无关。例如,计算1+2的BASIC语言程序:A=1+2 ;PRINTA ;END ;1.2Python语言概述Python继承于ABC语言,主要受到Modula-3的影响,Modula-3是另一种相当优美且强大的语言,为小型团体所设计,并且结合了Unixshell和C的习惯。

GuidovanRossum“Lifeisshort,youneedPython!”1.Python语言发展1.2Python语言概述Python的特点解释性面向对象第三方库开源,可移植简单易学/jobbole/awesome-python-cn2.Python语言特点例1.1第一个python程序Hello,World!>>>print'Hello,World!'语句输出:Hello,World!1.3简单的Python语言介绍程序如下:importmath#导入有两种方式sum=0x,y,z=input('pleaseinputthenumberx,y,z')sum=x+y+zaver=sum/3.0print(‘aver=’,aver)输入数据:3,6,9输出结果:aver=6.0例1.2求3个数的平均值例1.3求圆、长方形、三角形面积defCirArea(r): area=3.14*r*r print(“theareaofcircleis:”,area)defRectArea(a=5,b=6): area=a*b

print(“theareaofrectangleis:”,area)defTriArea(b,h) area=1.0/2*b*h print(“theareaoftriangleis:”,area) returnareaCirArea(4)RectArea()print(TriArea(3,4))运行结果:theareaofcircleis:50.24theareaofRectangleis:20theareaofTriangleis:6.01.4Python的程序开发工具1.Python的版本选择

最主流的两个版本是Python2.X和Python3.X2.Python的下载和安装/download3.Python的开发环境第2章数据类型Python程序设计与案例教程第2章数据类型标识符、常量和变量python的基本数据类型运算符与表达式math库及使用数据类型转换2.1常量、变量与标识符1.标识符标识符在程序中用来标识各种程序成分,命名程序中的一些实体。包括三方面:

1.字母;2.数字;3.下划线:“_”合法的标识符:x,a1,wang,num_1,radius,不合法的标识符:first-name,5sum单独的下划线(_)用于表示上一次运算的结果>>>2*36>>>_*1060使用标识符应注意:(1)见名知义:通过变量名就知道变量值的含义(2)开头和结尾都使用下划线的情况应该避免:_sum_(3)不能和关键字重名>>>importkeyword>>>print(keyword.kwlist)['False','None','True','and','as','assert','break','class','continue','def','del','elif','else','except','finally','for','from','global','if','import','in','is','lambda','nonlocal','not','or','pass','raise','return','try','while','with','yield']Python中的33个关键字>>>keyword.iskeyword('and')True

>>>keyword.iskeyword('int')Falsekeyword.iskeyword(word)在程序运行过程中,其值不能改变的量称为常量。(1)整型常量:-123、20(2)实型常量:3.14、0.15、-2.0(3)字符串常量:‘Python’、“HelloWorld!”(4)布尔型常量:True、False(5)复数类型常量:3+2.5j常量2.常量2.1常量、变量与标识符3.变量在Python中,不需要事先声明变量名及其类型,类型是在运行过程中自动决定的,直接赋值即可创建各种类型的变量。例如:>>>x=5>>>type(x)<class'int'>采用内置函数type()返回变量x的类型int。>>>x=5>>>type(x)<class'int'>>>>x="HelloWorld!">>>type(x)<class'str'>>>>x=(1,2,3)>>>type(x)<class'tuple'>(1)type()函数一般形式:type(变量名)与变量属性相关的内置函数>>>str="HelloWorld!">>>id(str)48768128(2)id()函数一般形式:id(变量名)>>>a=5>>>isinstance(a,int)True>>>isinstance(a,str)False>>>isinstance(a,(float,int,str))True(3)isinstance()函数一般形式:isinstance(对象,类型名)2.2Python的基本数据类型

在程序设计语言中,都是采用数据类型来描述程序中的数据结构、数据的表示范围和数据在内存中的存储分配等。整型数据即整数,不带小数点,可以有正号或者负号。在Python3.x中,整型数据在计算机内的表示没有长度限制,其值可以任意大。>>>a=12345678900123456789>>>b=a*a>>>b152415787504953525750053345778750190521

整型数据十进制整数:由0到9组成。二进制整数:以0b或0B为前缀,由0和1组成。八进制整数:以0o或0O为前缀,其后由0至7的数字组成。十六进制整数:以0x或0X开头,其后由0至9的数字和a至f字母或A至F字母组成。整型数据根据前缀来区分各种进制数实数又称浮点数,一般有两种表示形式:

十进制小数形式:由数字和小数点组成(必须有小数点

指数形式:用科学计数法表示的浮点数,用字母e(或E)表示以10为底的指数,e之前为数字部分,之后为指数部分。

注意:e(或E)前面必须有数字,后面必须是整数。

实型数据例如:e-5,1.2E-3.5,1e字符型数据可以使用一对单引号、双引号或者三引号字符型数据>>>"Let'sgo""Let'sgo">>>s="'Python'Program">>>s"'Python'Program"

转义字符字符形式含义\n

回车换行,将当前位置移到下一行开头\t

横向跳到下一制表位置(Tab)\b

退格,将当前位置退回到前一列\r

回车,将当前位置移到当前行开头\f

走纸换页,将当前位置移到下页开头\\

反斜线符"\"\'单引号符\"双引号符\ddd1~3位8进制数所代表的字符\xhh1~2位16进制数所代表的字符字符型数据【例】转义字符。a=1b=2c='\101'

print("\t%d\n%d%s\n%d%d\t%s"%(a,b,c,a,b,c))运行结果:□□□□□□□□12A12□□□□□□A转义字符Python的布尔类型有两个值:True和False,分别表示逻辑真和逻辑假。布尔型数据>>>type(True)<class'bool'>>>>True==1True>>>False==0True布尔类型还可以与其他数据类型进行逻辑运算,Python规定:0、空字符串、None为False,其他数值和非空字符串为True。布尔型数据>>>0andFalse0>>>NoneorTrueTrue布尔型数据复数由两部分组成:实部和虚部

复数的形式为:实部+虚部j复数类型数据>>>x=3+5j>>>x.real

3.0>>>x.imag

5.0>>>y=6-10j>>>x+y

(9-5j)2.3运算符与表达式Python运算符Python语言的运算符按照它们的功能可分为:(1)算术运算符(+、–、*、/、**、//、%)。(2)关系运算符(>、<、>=、<=、==、!=)。(3)逻辑运算符(and、or、not)。(4)位运算符(<<、>>、~、|、^、&)。(5)赋值运算符(=、复合赋值运算符)。(6)成员运算符(in、notin)。(7)同一运算符(is、isnot)。(8)下标运算符([])。(9)其他(如函数调用运算符())。2.3运算符与表达式几个相关概念

目(操作数个数)

优先级

结合性表达式2.3运算符与表达式1.算术运算符和算术表达式

运算符含义优先级+加法这些运算符的优先级相同,但比下面的运算符优先级低-减法*乘法这些运算符的优先级相同,但比上面的运算符优先级高/除法//取整除**幂运算%取模2.3运算符与表达式

Python中除法有两种:/和//,在Python3.x分别表示除法和整除运算。>>>3/5

0.6----------------------------------------------------->>>3//5

0----------------------------------------------------->>>-3.0//5

-1.0----------------------------------------------------->>>3.0//-5

-1.02.3运算符与表达式

**运算符实现乘方运算,其优先级高于*和/。例如:>>>2**3

8----------------------------------------------------->>>2**3.5

11.313708498984761----------------------------------------------------->>>4*3**2

362.3运算符与表达式运算符的多重含义:>>>3*5#整数相乘运算

15----------------------------------------------------->>>'a'*10#字符串重复运算

'aaaaaaaaaa'-----------------------------------------------------

2.3运算符与表达式2.赋值运算符和赋值表达式赋值运算符赋值运算符用“=”表示。赋值表达式

变量=表达式等号的左边必须是变量,右边是表达式。>>>y=2>>>x=(y+2)/3>>>x

1.33333333333333332.3运算符与表达式链式赋值在Python中,可通过链式赋值将同一个值赋给多个变量的,一般形式为:>>>x=y=5>>>x52.3运算符与表达式多变量并行赋值

变量1,变量2,…,变量n=表达式1,表达式2,…,表达式n变量个数要与表达式的个数一致,其过程为:首先计算表达式右边n个表达式的值,然后同时将表达式的值赋给左边的n个变量。例如:>>>x,y,z=2,5,8>>>x

2----------------------------------------------------->>>y

5----------------------------------------------------->>>z

82.3运算符与表达式例如:>>>x=20>>>x,x=3,x*3>>>x

60

采取并行赋值,可以使用一条语句就可以交换两个变量的值:x,y=y,x。2.3运算符与表达式复合的赋值运算符赋值运算符“=”与7种算术运算符(+、-、*、/、//、**、%)和5种位运算符(>>、<<、&、^、|)结合构成12种复合的赋值运算符。例如:a+=3 等价于 a=a+3a*=a+3 等价于 a=a*(a+3)a%=3 等价于 a=a%3注意:“a*=a+3”与“a=a*a+3”是不等价的,“a*=a+3”等价于“a=a*(a+3)”,这里括号是必需的。2.3运算符与表达式例:复合的赋值运算符。>>>a=3>>>b=5>>>a+=b>>>a

8----------------------------------------------------->>>a>>=2>>>a

2----------------------------------------------------->>>a*=a+3>>>a

102.3运算符与表达式3.关系运算符和关系表达式

运算符含义优先级结合性>大于这些运算符的优先级相同,但比下面的运算符优先级低左结合>=大于等于<小于这些运算符的优先级相同,但比上面的运算符优先级高<=小于等于==等于!=不等于<>不等于2.3运算符与表达式在Python中,真用“True”表示,假用“False”表示。>>>x,y,z=2,3,5>>>x>y

False>>>x<y<zTrue注意正确使用“=”与“==”a,b=0,1ifa=b:print("aequaltob")else:print("anotequaltob")语法错误:invalidsyntaxa,b=0,1ifa==b:print("aequaltob")else:print("anotequaltob")运行结果:anotequaltob关系运算符——注意符号区别2.3运算符与表达式4.逻辑运算符和逻辑表达式逻辑运算符

运算符含义优先级结合性not逻辑非

右结合and逻辑与左结合Or逻辑或2.3运算符与表达式逻辑表达式及短路运算(1)对于与运算aandb如果a为真,继续计算b,b将决定最终整个表达式的真值,所以,结果为b的值。如果a为假,无需计算b,就可以得知整个表达式的真值为假,所以,结果为a的值。例如:>>>Trueand0

0

>>>Falseand12False2.3运算符与表达式(2)对于或运算aorb如果a为真,无需计算b,就可得知整个表达式的真值为真,所以结果为a的值。如果a为假,继续计算b,b将决定整个表达式最终的值,所以结果为b的值。例如:>>>Trueor0

True>>>Falseor12

12>>>Falseor12or0

122.3运算符与表达式5.成员运算符和成员表达式

成员运算符用于判断一个元素是否在某一个序列中,或者判断一个字符是否属于这个字符串等,运算结果仍是逻辑值。运算符含义优先级结合性in存在

相同左结合notin不存在>>>'a'in'abcd'True>>>'ac'in'abcd'False2.3运算符与表达式

notin运算符用于在指定的序列中查找某个值是否不存在,不存在返回True,存在返回False。>>>'a'notin'bcd'

True>>>3notin[1,2,3,4]False2.3运算符与表达式6.同一性运算符和同一性表达式同一性运算符用于测试两个变量是否指向同一个对象,其运算结果是逻辑值。运算符含义优先级结合性is相同

相同左结合isnot不相同is检查用来运算的两个变量是否引用同一对象,如果相同返回True,不相同则返回False。isnot检查用来运算的两个变量是否不是引用同一对象,如果不是同一个对象返回True,否则返回False。2.3运算符与表达式>>>x=y=2.5>>>z=2.5>>>xisyTrue>>>xiszFalse>>>xisnotzTrue2.4

math库及其使用math库数学常数常数描述math.pi圆周率pimath.e自然常数emath.tau数学常数τmath.inf正无穷大math.nan非浮点数标记,NaN(NotaNumber)2.4

math库及其使用>>>importmath>>>math.pi3.141592653589793>>>math.e2.718281828459045>>>math.tau6.283185307179586>>>a=float("inf")#创建变量a为正无穷大>>>ainf2.4

math库及其使用math库常用函数函数功能描述math.ceil(x)返回不小于x的最小整数math.cmp(x,y)比较x和y。如果

x>y,返回1;如果

x==y,返回

0;如果

x<y,返回-1math.exp(x)返回指数函数ex的值math.fabs(x)返回浮点数x的绝对值math.fmod(x,y)返回x与y的模,即x%y的结果math.fsum([x,y,…])浮点数精确求和,即求x+y+…math.floor(x)返回不大于x的最大整数math.log(x)返回x的自然对数的值,即lnx的值math.log10(x)返回以10为基数的x的对数2.4

math库及其使用>>>x=-1>>>math.abs(x)1>>>math.pow(2,3)8.0>>>math.fsum([0.03+1.58+0.0005])1.6105>>>math.log10(100)2.0>>>a=float("inf")>>>math.isinf(a)True2.5类型转换自动类型转换在Python中,同一个表达式允许不同类型的数据参加运算,这就要求在运算之前,先将这些不同类型的数据转换成同一类型,然后再进行运算。>>>10/4*410.0>>>type(10/4*4)<class'float'>2.5类型转换

当自动类型转换达不到转换需求时,可以使用类型转换函数,将数据从一种类型强制(或称为显式)转换成另一种类型。函数功能描述int(x)将x转换为整数float(x)将x转换为浮点数complex(x)将x转换为复数,其中实部为x,虚部为0complex(x,y)将x、y转换为复数,其中实部为x,虚部为ystr(x)将x转换为字符串chr(x)将一个整数转换为一个字符,整数为字符的ASCII编码ord(x)将一个字符转换为它的ASCII编码的整数值hex(x)将一个整数转换为一个十六进制字符串oct(x)将一个整数转换为一个八进制字符串eval(x)将字符串str当做有效表达式求值,并返回计算结果强制类型转换第3章Python程序设计基础Python程序设计与案例教程第3章Python程序设计基础3.1算法3.2程序的基本结构3.3程序的输入与输出3.4顺序程序设计举例特征:有穷性确定性评价标准:正确性可读性健壮性(Robust,鲁棒性)高效率与低存储要求定义:对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。数据结构+算法=程序3.1算法可执行性有输入、输出3.1算法规范的方法:自然语言、流程图、N-S结构流程图、伪代码。(1)自然语言:人们日常生活中的语言,用自然语言通俗易懂,容易被人接受。(2)流程图的基本构成:起至框输入输出判断框处理框或流程线连接点注释框流程图的三种基本结构aABb顺序结构先执行A,再执行B.若P为真,则执行A,

否则执行B.若P为真,则执行A,

否则跳过A.aAYNBpabAPNYb选择结构流程图的三种基本结构ApNY当型循环结构abApYNba直到型循环先执行A,再判断,若P为真,反复执行A,P为假时出循环。当P为真,反复执行A,P为假时出循环。N-S流程图去掉了箭头,算法写在一个矩形框里。它也有三种结构:顺序、选择和循环(3)N-S结构流程图AB顺序结构pyesnoAB选择结构当p成立A当型循环A

当p成立直到型循环

任何程序均可以由“顺序”、“选择”和“循环”这三种基本结构通过有限次的组合与嵌套来描述。

任何程序设计语言均由这三种基本结构组成,其差别在于具体语法的形式不同,而原理是相同的。3.2程序的基本结构1、顺序结构ABAB流程图N-S图2、选择结构分支选择结构3、循环结构当型循环直到型循环共同特点:单入口、单出口三种结构之间可以是顺序关系、平行关系,也可以互相嵌套,通过结构之间的复合形成复杂的关系。三种基本结构的特点流程图例1:求三个整数的和开始输出sum的值结束输入x,y,zsum=x+y+z输出sum的值sum=x+y+z输入x,y,zN-S结构流程图例1:求三个数中最小的那个数流程图N-S结构流程图开始输出min的值输入a,b,ca<bNmin=amin=bY结束min>cmin=cYNmin=bmin=aa<bYNmin=cmin>cYN输入a,b,c输出min的值3.3数据的输入和输出(InputandOutput)

一般一个程序分为三步进行:输入原始数据、进行计算处理和输出运算结果

。(1)标准输入input()

input([提示字符串])input()在Python2.x中,函数返回结果的类型由输入时使用的界定符来决定。>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:5

>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:'5'

>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:[1,2,3]

>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:(1,2,3)raw_input()Python2.x中提供该函数用来接收用户输入的值,该函数将所有用户的输入都作为字符串看待,返回字符串类型。>>>x=raw_input("Pleaseenteryourinput:")Pleaseenteryourinput:5>>>x'5'>>>x=raw_input("Pleaseenteryourinput:")Pleaseenteryourinput:(1,2,3)>>>x'(1,2,3)'input()在Python3.x中,仅保留了input()函数。input()函数接收任意输入,将所有输入默认为字符串处理。>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:5>>>print(type(x))<class'str'>说明:内置函数type用来返回变量类型。当输入数值5赋值给变量x之后,x的类型为字符串类型。>>>x=input("Pleaseenteryourinput:")Pleaseenteryourinput:(1,2,3)>>>print(type(x))<class'str'>input()

如果要输入数值类型数据,可以使用类型转换函数将字符串转换为数值。>>>x=int(input(“pleaseinputyourinput:”))pleaseinputyourinput:5>>>print(type(x))<class'int'>说明:x接受的是字符串5,通过int()函数将字符串转换为整型。(2)标准输出在Python2.x中使用的是print语句输出在Python3.x中使用的是print()函数输出print()函数的一般形式为:print([输出项1,输出项2,....,输出项n][,sep=分隔符][,end=结束符])说明:输出项之间用逗号分隔,没有输出项时输出一个空行。sep表示输出时候各个输出项之间的分隔符,end表示输出时的结束符。(2)标准输出print函数从左求出至右各输出项的值,并将各输出项的值依次显示在屏幕的同一行上。>>>x,y=2,3>>>print(x,y)23>>>print(x,y,sep=':')2:3>>>print(x,y,sep=':',end='%)2:3%(3)格式化输出1.字符串格式化%格式控制字符串%(输出项1,输出项2,...输出项)(1)常规字符:包括可显示的字符和用转义字符表示的字符。(2)格式控制符:以%开头的一个或多个字符,以说明输出数据的类型、形式、长度、小数位数等。例如:print(“sum=%d”%x)print()格式化说明4d或i十进制格式o八进制格式x、X十六进制格式c一个字符格式s字符串格式f实数格式e或E指数格式g或G1235678e和f中较短一种格式2.附加格式说明符m:域宽,十进制整数,用以描述输出数据所占宽度。n:附加域宽,十进制整数,用于指定实型数据小数部分的输出位数。—:输出数据左对齐,默认为右对齐+:输出正数时,也以+号开头#:作为o,x的前缀时,输出结果前面加上前导符号0,,0x格式化输出:>>>year=2017>>>month=1>>>day=28>>print('%04d-%02d-%02d'%(year,month,day))2017-01-28

>>>value=8.123>>print('%06.2f'%value)008.12>>>print('%d'%10)10>>>print('%o'%10)12>>>print('%02x'%10)0a>>>print('%04X'%10)000A>>>print('%.2e'%1.2888)1.29e+00字符串的format方法一般形式:格式字符串.format()(输出项1,输出项2,……,输出项n)

其中格式字符串使用大括号括起来,一般形式为:{[序号或键]:格式说明符}>>>"{}{}".format("hello","world")'helloworld'>>>"{0}{1}".format("hello","world")'helloworld'>>>"{1}{0}{1}".format("hello","world")'worldhelloworld'(1)使用“{序号}”形式的格式说明符字符串的format方法实例>>>"{0:.2f},{1}".format(3.1415926,100)'3.14,100'(2)使用“{序号:格式说明符}”形式的格式说明符字符串的format方法实例>>>"{0},pi={x}".format("圆周率",x=3.14)'圆周率,pi=3.14'(3)使用“{序号/键:格式说明符}”形式的格式说明符3.4顺序程序设计举例【例1】从键盘输入一个3位整数,分离出它的个位、十位和百位并分别在屏幕输出。x=int(input(“请输入一个3位整数:”))a=x//100b=(x-a*100)//10c=x%10print(“百位=%d,十位=%d,个位=%d”%(a,b,c))程序运行结果如下:请输入一个3位整数:235百位=2,十位=3,个位=5顺序程序设计举例

例2:已知三角形三条边的边长(为简单起见,假设这三条边可以构成三角形),求三角形的面积。分析:三角形面积=其中,a、b、c是三角形三边的边长,p是三角形周长的一半importmatha=float(input("请输入三角形的边长a:"))b=float(input("请输入三角形的边长b:"))c=float(input("请输入三角形的边长c:"))p=(a+b+c)/2area=math.sqrt(p*(p-a)*(p-b)*(p-c));print(str.format(“三角形的面积=%f”%area))第4章选择结构程序设计Python程序设计与案例教程4.1

单分支选择结构形式:if表达式:

语句1.简单的if语句expATFexpyesnoAc=input("Pleaseinputcharacter:")ifc>='a'andc<='z':

c=ord(c)-32print("%c\n"%c)例:将小写字母转换为大写字母思考:若将大写字母转换为小写字母.4.1单分支选择结构例:输入三个整数x,y,z,把这三个数由小到大输出x,y,z=eval(input(‘请输入x、y、z:’))ifx>y:

x,y=y,xifx>z:

x,z=z,xify>z:

y,z=z,yprint(x,y,z)输出x,y,x的值交换x,zx>z交换x,yx>y输入x,y,zYNYN交换y,zy>zYN思考:如果要将三个数从大到小输出,程序该如何编写?4.2双分支选择结构形式:

if表达式:

语句Aelse:语句B1.语句的一般语法格式:if---elseexpABTFexpyesnoAB例:求输入的两个整数的最小值x,y=eval(input(‘请输入x、y:’))ifa<b:min=aelse:min=bprintf(“Theminimumis%d”%min)输入a,bmin=a;a<bYNmin=b;输出最小值min例:一个5位数,判断它是不是回文数,即12321

是回文数,个位与万位相同,十位与千位相同。

分析:分解出每一位数(万位、千位、十位和个位),然后判断。

x=int(input('请输入x:'))wan=x//10000qian=x%10000//1000shi=x%100//10ge=x%10ifge==wanandshi==qian:print("Itispalindromicnumber!\n")else:print("Itisnotpalindromicnumber!\n")shi=x%100//10输出不是回文N输出是回文Yge=x%10qian=x%10000//1000wan=x//10000输入xwan==geandqian==shi4.3

多分支选择结构

if语句的扩展形式:if-elseif-elseifexp1:

选择体1elifexp2:

选择体2……elifexpn:

选择体nelse:

选择体n+1exp1选择1TFexp2exp3选择n+1选择3选择2TTFF……例:编写程序计算函数值2x+1(1<=x<10)3x+1(x>=10)y=x(x<1)x=int(input("pleaseinputx:"))ifx<1:y=xelifx<10:y=2*x+1else:y=3*x+1print("Theresultis%d"%y)输入xy=x;x<1Y输出函数值yYy=2x+1y=3x+11<=xandx<10NNif表达式1:

if表达式2:

语句1

else:

语句2else:

if表达式3:

语句3else:

语句4内嵌if内嵌if4.4选择结构嵌套if语句的嵌套:如果if的内嵌语句中又使用了一个if语句,则构成if语句的嵌套。例:购买地铁车票的规定如下:乘1-4站,3元/位;乘5-9站,4元/位;乘9站以上,5元/位。输入人数、站数,输出应付款。Falsem<=4True开始输出应付款结束输入人数n、站数mm<=9pay=4*npay=5*nTrueFalsen,m=eval(input(‘请输入人数,站数:'))ifm<=4:pay=3*nelse:

ifm<=9:pay=4*n

else:pay=5*nprint('应付款:',pay)例:输入一个整数,判断它是否为水仙花数。所谓水仙花数,是指这样的一些三位整数:各位数字的立方和等于该数本身,例如153=13+53+33,因此153是水仙花数。4.5选择结构程序举例x=int(input('请输入三位整数x:'))a=x//100b=(x-a*100)//10c=x-100*a-10*bifx==a**3+b**3+c**3:print(x,'是水仙花数')else:print(x,'不是水仙花数')第5章循环结构程序设计Python程序设计与案例教程循环结构程序设计5.1while语句5.2

for语句结构5.3循环的嵌套5.4循环控制语句5.5循环结构程序举例循环结构的基本类型

当型循环while,forexpAFT循环结构程序设计

循环结构程序设计的应用场合:当某个条件满足时,需要多次反复进行同样工作。例如:1、求实数x的10次方2、求数列1,2,…,i,…的前n项和3、判断一个整数是否是素数………………5.1while语句(当型循环)特点:先判断,再执行while语句的语法格式:注意:

循环体可能一次也不执行。

循环体可为任意类型语句。

退出while循环的情况:exp不成立循环体内遇break,return等。exp循环体FTwhileexp:

循环体在while语句中使用else子句Python可以在循环语句中使用else子句,即构成了while.......else循环结构。whileexp:

循环体else:

语句while....else循环结构例如:count=int(input())whilecount<5: print(count,”islessthan5”) count=count+1else: print(count,”isnotlessthan5”)程序运行结果88isnotlessthan5例:求1)问题分析:

sum,n=0,1n<=100sum=sum+nn=n+1YN输出sum结束开始sum=1+2+…+100

100个数

循环语句:循环变量初始化:循环控制条件:循环体:循环变量的修改:n=1n<=100sum+=nn=n+1例:求sum,n=0,1whilen<=100:

sum=sum+n

n=n+1

printf("1+2+3+....+100=",sum)循环语句四要素:循环(控制)变量初始化循环控制条件循环体(关键是找规律)循环变量的修改运行结果:1+2+3.......+100=5050while语句对于while语句的用法,要注意以下几点:(1)如果while后面表达式的值一开始就为假,则循环体一次也不执行。(2)循环体中的语句可以任意类型的语句。(3)遇到下列情况,退出while循环:

A表达式不成立

B循环体内遇到break、return语句。

例:从键盘输入若干个数,求所有正数之和。当输入负数时,程序结束。输入xsum=0x>=0sum=sum+xYN输出sum结束开始

循环语句四要素:循环变量初始化:循环控制条件:循环体:循环变量的修改:输入x的值x>=0sum=sum+x

输入x的值输入x

例:从键盘输入若干个数,求所有正数之和。当输入0或负数时,程序结束sum=0x=int(input(“请输入正整数:"))whilex>=0: sum=sum+x x=int(input(“请输入正整数:"))

printf("sum=",sum)例:输入一个正整数x,如果x满足0<x<99999,则输出x是几位数并输出x个位上的数字。x=int(input(“Pleaseinputx:”)ifx>=0andx<99999: i=x n=0whilei>0: i=i//10 n=n+1a=x%10print(“%d是%d位数,它的个位上数字是”%(x,n,a))else:print(“输入错误!”)5.1while语句——说明while语句之前必须预先设置判断的初始条件

防止“死循环”的发生在循环体中必须有使循环趋向结束的操作,即在循环体中要有能让逻辑表达式值改变的语句

正确使用缩进当循环体中含多条语句时,需用缩进这些多条语句,而且缩进一定要符合逻辑关系在循环体中,语句的先后位置必须符合逻辑否则会影响运算结果。5.2for语句结构1.for语句一般形式:for目标变量in序列对象:

循环体语句说明:

for语句的首行定义了目标变量和遍历的序列对象,后面是需要重复执行的语句块。语句块中的语句要向右缩进,且缩进量要一致。注意:(1)for语句是通过遍历任意序列的元素来建立循环的。(2)for语句也支持一个可选的else块,一般格式如下:

for目标变量in序列对象:

语句块 else:

语句2.range对象在for循环中的应用range函数返回的是可迭代对象,range()函数的一般格式为:

range([start,]end[,step])

rang()函数共有三个参数,start和step是可选的,start表示开始,默认值为0,end表示结束,step表示每次跳跃的间距,默认值为1。函数的功能是从一个start参数的值开始,到end参数的值结束的数字序列。传递一个参数的range()函数:>>>foriinrange(5): print(i)传递两个参数的range()函数:>>>foriinrange(2,4): print(i)传递三个参数的range()函数:>>>foriinrange(2,20,3): print(i)range()例用for循环求sum=0foriinrange(101): sum=sum+iprint(“1+2+3+....+100”,sum)sum=0foriinrang(101):sum=sum+i输出summ=int(input(“请输入要判断的正整数m”))flag=1foriinrange(2,m): ifm%i==0: flag=0 i=mifflag==1:print(“%d是素数”%m)else: print(“%d不是素数”%m)例判断m是否为素数。例:已知四位数3025具有特殊性质:它的前两位数字30与后两位数字25之和是55,而55的平方正好等于其本身3025。编程列举出具有该性质的四位数。print(“满足条件的四位数分别是:”)foriinrange(1000,10000):

a=i//100 b=i%100 if(a+b)**2==i: print(i)print(“满足条件的数分别是:”)count=0foriinrange(1,100): ifi%7==0andi%11!=0ori%11==0andi%7!=0:

print(i,end=””) count=coun+1 ifcount%10==0: print(“”)

例求出1到100能被7或11整除但不能被7和11同时整除的所有整数并将它们输出。每行10个。5.3循环嵌套

循环的嵌套,又称多层循环,应用于多个变量同时变化的情况。说明:1.外层循环可包含两个以上内循环

2.嵌套的循环的执行流程5.3循环嵌套

注意:while、for循环语句可以并列,也可以相互嵌套,但要层次清楚,不能出现交叉多重循环程序执行时,外层循环每执行一次,内层循环都需要循环执行多次。

外循环执行了6次内循环执行10次循环正常结束时,内循环执行了

10×6=60次foriinrange(6):forjinrange(10):……

5.3循环嵌套循环语句while和for可以相互嵌套。在使用循环嵌套时,应注意以下几个问题:(1)外层循环和内层循环控制变量不能同名,以免造成混乱。(2)循环嵌套的缩进在逻辑上一定要注意,以保证逻辑上的重要性。(3)循环嵌套不能交叉,即在一个循环体内必须完整地包含另一个循环。循环嵌套在使用中的重点内容能够正确判断内外层循环体的范围能够正确判断内外层循环体的执行次数注意内层循环的初值设定能正确处理内层循环与外层循环变量的关系5.3循环嵌套例:输出九九表,输出格式如下:1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81foriinrange(1,10,1): forjinrange(1,i+1,1): print(“%d*%d=%2d”%(j,i,i*j),end=””) print(“”)例:找出所有的三位数,要求它的各位数字的立方和正好等于这个三位数。例如:153=13+53+33就是这样的数。foriinrange(1,10):forjinrange(0,10):forkinrange(0,10):ifi**3+j**3+k**3==i*100+j*10+k:print("%d%d%d"%(i,j,k))程序运行结果:153370371407例:求100~200之间的全部素数。print("100~200之间的素数有:")forminrange(100,200):

flag=1foriinrange(2,m):ifm%i==0:flag=0 breakifflag==1:print(m,end="")

5.4循环控制语句

有时候我们需要在循环体中提前跳出循环,或者在某种条件满足时,不执行循环体中的某些语句而立即从头开始新的一轮循环,这时就要用到循环控制语句break、continue和pass语句。一般格式

break功能

break语句用在循环体内,迫使所在循环立即终止,即跳出所在循环体,继续执行循环结构后面的语句。(1)break语句……break……expNY求两个整数m与n的最大公约数。m,n=eval(input("请输入两个整数:"))ifm<n:min=melse:min=nforiinrange(min,1,-1):ifm%i==0andn%i==0:print("最大公约数是:",i)break一般格式

continue功能在循环语句中强行提前结束本次循环,

而不是终止循环。(2)continue语句……continue……expNY例求1~100之间的全部奇数之和。程序如下:x=y=0whileTrue:x+=1ifx%2==0:continueelifx>100:break

else:y+=xprint("y=",y)程序运行结果:y=2500(3)pass语句pass语句是一个空语句,它不做任何操作,代表一个空操作,在特别的时候用来保证格式或是语义的完整性。例如下面的循环语句:foriinrange(5):pass该语句的确会循环5次,但是除了循环本身之外,它什么也没做。例:pass语句应用:逐个输出“Python”字符串中的字符。forletterin"Python":ifletter=="o":passprint("Thisispassblock")print("CurrentLetter:",letter)print("End!")程序运行结果:CurrentLetter:PCurrentLetter:yCurrentLetter:tCurrentLetter:hThisispassblockCurrentLetter:oCurrentLetter:nEnd!5.5循环结构程序举例例:利用下面的公式求的近似值,要求累加到最后一项小于10-6为止。程序如下:importmaths=1n=1.0t=1.0pi=0whilemath.fabs(t)>=1e-6:pi=pi+tn=n+2s=-st=s/npi=pi*4print("PI=%f"%pi)程序运行结果:PI=3.141591例:“百钱百鸡”问题。公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买一百只鸡,其中公鸡、母鸡、小鸡都必须要有,问公鸡,母鸡,小鸡要买多少只刚好凑足100文钱?分析:显然这是一个组合问题,也可以看作是解不定方程的问题,采用列举的方法实现。令i、j、k分别表示公鸡、母鸡和小鸡的数目。例:“百钱百鸡”问题。[方法一]令i、j、k的列举范围分别为:i:1~20(公鸡最多能买20只)j:1~33(母鸡最多能买33只)k:1~100(小鸡最多能买100只)采用三重循环逐个搜索。程序如下:foriinrange(1,21):forjinrange(1,34):forkinrange(1,101):ifi+j+k==100andi*5+j*3+k/3==100:print(“公鸡:%d只,母鸡:%d只,小鸡:%d只"%(i,j,k))程序运行结果:公鸡:4只,母鸡:18只,小鸡:78只公鸡:8只,母鸡:11只,小鸡:81只公鸡:12只,母鸡:4只,小鸡:84只循环体执行次数20×33×100=66000次例:“百钱百鸡”问题。[方法二]令i、j、k的列举范围分别为(保证每种鸡至少买一只):i:1~18(公鸡最多能买18只)j:1~31(母鸡最多能买31只)k:100-i-k采用两重循环逐个搜索程序如下:foriinrange(1,19):forjinrange(1,32):k=100-i-jifi+j+k==100andi*5+j*3+k/3==100:print(“公鸡:%d只,母鸡:%d只,小鸡:%d只"%(i,j,k))循环体执行次数18×31=558次例:“百钱百鸡”问题。程序如下:foriinrange(1,14):forjinrange(1,24):k=100-i-jifi+j+k==100andi*5+j*3+k/3==100:print(“公鸡:%d只,母鸡:%d只,小鸡:%d只"%(i,j,k))循环体执行次数13×23=229次方法三:例:“百钱百鸡”问题。[方法四]由方法三中的式7i+4j=100可得:j=(100-7i)/4。i的搜索范围为1~13。采用单层循环进行逐个搜索。程序如下:foriinrange(1,14):j=(100-7*i)/4k=100-i-jifi%4==0:print("公鸡:%d只,母鸡:%d只,小鸡:%d只"%(i,j,k))循环体执行次数13次第6章组合数据类型Python程序设计与案例教程6.1组合数据类型概述序列中的每一个元素都有自己的位置编号,可以通过偏移量索引来读取数据。1.序列类型读取元素方法:序列名[索引]索引范围:-n~n-1(包含n个元素的序列)6.1组合数据类型概述集合类型中的元素是无序的,无法通过下标索引的方法访问集合类型中的每一个数值集合中的元素不能重复集合中的元素类型只能是固定的数据类型2.集合类型映射类型是“键-值”对的集合元素之间是无序的,通过键可以找出该键对应的值映射类型的典型代表是字典3.映射类型6.2列表是Python中内置数据类型,是一个元素的有序集合一个列表中的数据类型可以各不相同列表中的每一个数据称为元素其所有元素用逗号分割并放在一对中括号“[”和“]”中例如:[1,2,3,4,5]['Python','C','HTML','Java','Perl

']['wade',3.0,81,['bosh','haslem']]6.2.1列表的基本操作1.列表的创建使用赋值运算符“=”将一个列表赋值给变量即可创建列表对象。>>>a_list=

['physics','chemistry',2017,2.5]>>>b_list=['wade',3.0,81,['bosh','haslem']]>>>c_list=[1,2,(3.0,'helloworld!')]>>>d_list=[]2.列表元素读取方法为:列表名[索引]>>>a_list=['physics','chemistry',2017,2.5,[0.5,3]]>>>a_list[1]'chemistry'>>>a_list[-1][0.5,3]>>>a_list[5]Traceback(mostrecentcalllast):File"<pyshell#9>",line1,in<module>a_list[5]IndexError:listindexoutofrange切片操作的方法是:列表名[开始索引:结束索引:步长]3.列表切片>>>a_list[1:3]['chemistry',2017]>>>a_list[1:-1]['chemistry',2017,2.5]>>>a_list[:3]['physics','chemistry',2017]>>>a_list[1:]

['chemistry',2017,2.5,[0.5,3]]>>>a_list[:]['physics','chemistry',2017,2.5,[0.5,3]]>>>a_list[::2]['physics',2017,[0.5,3]]a_list=['physics','chemistry',2017,2.5,[0.5,3]](1)使用“+”运算符将一个新列表添加在原列表的尾部4.增加元素>>>id(a_list)494110

温馨提示

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

评论

0/150

提交评论