版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
信息科学技术学院
计算概论C教材Python程序设计基础及实践(慕课版)郭炜编著人民邮电出版社慕课:中国大学MOOC实用Python程序设计/course/PKU-1460924165?from=searchPage信息科学技术学院福建省宁德市北岸公园程序设计语言概述常见程序设计语言Java:使用最广泛的语言。主要用于互联网服务器端应用和Android手机App开发C/C++:开发对速度要求较高的系统软件,以及大型端游C#:微软公司程序设计语言,网站开发,桌面应用开发PHP:网站开发JavaScript:网站前端开发。在浏览器中运行Swift:苹果公司语言,用于开发iPhoneApp和Mac桌面应用程序常见程序设计语言为什么学Python简单易学有众多的库支持,功能强大
编程效率高
跨平台(Windows,Linux,MacOS...)Python的历史Python的作者,GuidovonRossum,荷兰人。1982年,Guido从阿姆斯特丹大学(UniversityofAmsterdam)获得了数学和计算机硕士学位。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是一个叫MontyPython的喜剧团体的爱好者。Python的历史
Python雏形 1991年Python1.0
1994年11月Python2.0 2000年Python2.7.13是Python2的最后版本Python3.0 2008年Python3不向后兼容Python2目前:Python3.8.6Python开发环境的安装和使用信息科学技术学院
郭炜内蒙古阿斯哈图石林下载Python/downloads/MacOSX64-bit/32-bitinstallerWindowsx86-64executableinstaller 64位WindowsWindowsx86executableinstaller 32位Windows搭建Python开发环境下载并安装Python3.x下载并安装pycharm-community-4.0.4(非必需,但强烈推荐)/pycharm/download/#section=windows3)配置pycharm
4)在pycharm建工程5)编写、运行python程序安装Python1.不是下载下来就好了,还要运行下载下来的文件,进行安装2.要勾上,否则pycharm里面找不到python以命令行方式运行python程序Windows下,Win+R
键,可以弹出左边“运行”窗口,敲"cmd"确定,就能弹出右边cmd窗口(命令行窗口)Mac上相应操作,是从launchPad里面启动“终端”以命令行方式运行python程序Windows下,Win+R
键,可以弹出左边“运行”窗口,敲"cmd"确定,就能弹出右边cmd窗口(命令行窗口)敲cd\再敲cd\tmp(或其它文件夹名)进入存放python程序的文件夹pythonXXX.py就可以运行XXX.py用idle编辑程序并运行Python程序window键,然后敲idle,可找到idle,然后File|New|Run用PyCharm运行python程序File|NewProject新建一个工程(Mac电脑上,PyCharm的菜单在屏幕最上方)File|New
新建一个PythonFile
并随意命名Run菜单运行程序。如果同时打开多个.py程序,则用Run|Run
可以选一个。以后要运行同一个文件,在右上方点4)如果程序需要输入,则在PyCharm下方输入,输出结果也会出现在下方为project设置解释器如果pycharm找不到pythoninterpereter,则:File|Settings|Project:XXX|Projectinterpreter,然后选解释器。如果没得选,就addlocal加一个,加的办法是选python安装的文件夹安装Python要在命令行方式启动python,就要在安装的时候勾上不行就卸载重装最简单的Python程序print("Hello,World")程序中的符号程序中的所有字符都必须是英文(半角)字符,不能是中文(全角)字符,注意.',(,"之类的,都必须是英文字符!22输入了中文的括号和双引号,导致pyCharm以红线提示错误!信息科学技术学院Python语言基本要素符号和注释信息科学技术学院
郭炜瑞士布里茨恩湖程序中的符号
程序中的所有字符都必须是英文字符,不能是中文的字符,注意,:
.',("之类的,都必须是英文字符!不能是中文的!不能在输入中文状态下输入!中文的标点符号看起来一般比英文的更宽。除非就是要输出中文文字,才会在“字符串”中使用中文25注释26并非需要执行的指令,只是为了编程者方便理解程序之用注释:"#"开头a=b#让a和b的值相同
注释27Pycharm中,选中若干行,Ctrl+'/'可将这些行都变成注释/都由注释变为非注释信息科学技术学院福建省宁德市北岸公园变量新疆喀拉峻鳄鱼湾变量29变量有名字,可以用来存储数据。其值可变。a=12
b=a #让b的值变得和a一样
print(a+b)
a="hello"
print(a)输出:24hello变量的命名办法30变量由大小写字母、数字和下划线构成,中间不能有空格,长度不限,不能以数字开头
name_doorNumx1yza2A number_of_studentsMYTYPE变量名最好能够体现变量的含义多单词的变量名,最好第一个单词小写,后面单词首字母大写dateOfBirth numOfDogs bookPrice变量的命名办法31变量名是大小写相关的a和A,name和Name是不同的变量。有些名字Python预留了,不可用作变量的名字 andasassertbreakclasscontinuedef delelifelseexceptexecforfinallyfrom globalifimportinislambdanotorpass printraisereturntrywhilewithyield
如果不小心用了,python会报错信息科学技术学院新疆布尔津五彩滩赋值语句赋值语句33形式:
变量=表达式将变量的值变得和“表达式”的值一样变量、数、字符串都是“表达式”赋值语句34a="he"
print(a) #>>he
b=3+2
a=b#a的值变得和b一样
print(b) #>>5
print(a)#>>5
b=b+a#b的值改为原来b的值加aprint(b) #>>10b=b*3 #'*'代表乘法print(b) #>>30赋值语句35a,b="he",12print(a,b) #>>he12a,b=b,a #交换a,b的值
print(a,b)#>>12hec,a,b=a,b,aprint(a,b,c)#>>he1212a=b=c=10print(a,b,c)#>>101010
信息科学技术学院新疆塞里木湖字符串初步字符串可以且必须用单引号、双引号或三单引号、三双引号括起来x="Isaid:'hello'"print(x) #>>Isaid:'hello'print('Isaid:"hello"')#>>Isaid:"hello"print('''Isaid:'hesaid"hello"'.''')#>>Isaid:'hesaid"hello"'.print("this\is\good")#>>thisisgood字符串太长时,可以分行写print(hello,word)
#错!没有用引号括起来37字符串字符串里面不会包含变量s=1.75print(s) #>>1.75print("Iamsmtall") #>>Iamsmtall字符串中的s就是个字符,和前面的变量s没有关系!!!字符串必须用引号括起来,用引号括起来的就是字符串!a=4b=5print("a+b")#>>a+b不会打出9!!!!!38字符串三双引号字符串中可以包含换行符、制表符以及其他特殊字符。para_str="""多行字符串可以使用制表符TAB(\t)。也可以使用换行符[\n]。<HTML><HEAD><TITLE>FriendsCGIDemo</TITLE></HEAD><BODY><H3>ERROR</H3><FORM><INPUTTYPE=buttonVALUE=BackONCLICK="window.history.back()"></FORM></BODY></HTML>"""print(para_str)39多行字符串可以使用制表符TAB( )。也可以使用换行符[]。<HTML><HEAD><TITLE>FriendsCGIDemo</TITLE></HEAD><BODY><H3>ERROR</H3><FORM><INPUTTYPE=buttonVALUE=BackONCLICK="window.history.back()"></FORM></BODY></HTML>字符串字符串的下标有n个字符的字符串,其中的每个字符都是长度为1的字符串:
从左到右依次编号为0,1,2...n-1
从右到左依次编号为-1,-2...-n编号就是下标a="ABCD" print(a[-1]) #>>Dprint(a[0]) #>>Aprint(a[2]) #>>C 40字符串不可修改不可以修改字符串中的字符a="ABCD" a[2]='k'#错,字符串中的字符不能修改41字符串用"+"连接字符串a="ABCD"b="1234"a=a+bprint(a) #>>ABCD1234a=a+a[1] print(a) 42字符串用"+"连接字符串a="ABCD"b="1234"a=a+bprint(a) #>>ABCD1234a=a+a[1] print(a) #>>ABCD1234B43字符串用in,notin判断子串a="Hello"b="Python"print("el"ina) #>>Trueprint("th"notinb) #>>Falseprint("lot"ina) #>>False44字符串和数
的转换信息科学技术学院内蒙古锡盟草原字符串和数的转换int(x) :把字符串转换成整数 (x不会变成整数,
int(x)这个表达式的值是整数)float(x):把字符串x转换成小数str(x):把x转换成字符串eval(x):把字符串x看作一个python表达式,求其值初学者程序出现runtimeerror,多半是由于做了不合法的转换,如int(x)而x为"a12"或"12.34",float(x)而x为"abc"46字符串和数的转换a=15b="12"c=a+b#错误的语句,字符串和整数无法相加print(a+int(b))#>>27b没有变成整数int(b)这个表达式的值是个整数print(str(a)+b)#>>1512c=1+float("3.5")print(c) #>>4.5print(3+eval("4.5"))#>>7.5print(eval("3+2")) #>>5print(eval("3+a")) #>>1847小数到整数的转换int(x)x是小数,则去尾取整int(3.2) #3int(3.9) #3int("4.5") #runtimeerror,字符串内容必须是整数的形式48Python数据类型int
整数 123456899899float 小数 3.21.5E6complex 复数 1+2jstr
字符串 "hello"list 列表 [1,2,'ok',4.3]tuple 元组 (1,2,'ok',4.3)bool
布尔 TrueFalsedict
字典 {"tom":20,"jack":30}set 集合 {"tom",18,71}输入输出初步信息科学技术学院
郭炜新加坡金沙酒店无边泳池输出语句printprint(x,y,z)#也可以只输出一项
连续输出多项,以空格分隔,然后换行print(x,y,z,end="")
连续输出多项,以空格分隔,不换行print(1,2,3,end="")print("ok")#>>123ok注意:做OpenJudge作业的时候,print里面慎用',',因为可能会多出不该有的空格51输入语句input格式:x=input(y)x是变量y是字符串,或任何值为字符串的表达式输出y,并等待输入。敲回车后输入的字符串被赋值给x52最简单的能处理输入的Python程序s=input("请输入你的名字:")print(s+",你好!")注意:以后做OpenJudge作业的时候,input里面不要写任何东西s=input()4)如果程序需要输入,则在PyCharm下方输入,输出结果也会出现在下方输入语句inputinput()每次输入一行,如果有多行输入,就用多次input()初学者常犯错误:如果输入已经结束(后面没有输入数据了),再进行input(),就会产生runtimeerror不要多行输入只用一次input,也不要一行输入用多次input55在一行输入3个整数,输出它们的和。a,b,c=input().split()#a,b,c即为在一行中输入的,空格分隔开的3个字符串a”67”b”45”c”38”同一行输入多项数据:列表初步信息科学技术学院
郭炜德国国王湖列表列表可以有0到任意多个元素,元素可以通过下标访问empty=[]#空表list1=['Google','Runoob',1997,2000]list2=[1,2,3,4,5,6,7]print("list1[0]:",list1[0])#>>list1[0]:Googlelist1[2]=2001 #更改了列表中下标为2的元素。a=2print("更新后的第三个元素为:",list1[a])#变量也能做下标#>>更新后的第三个元素为:2001列表用in判断列表是否包含某个元素lst=[1,2,3,"4",5]print(4inlst,3inlst,"4"inlst)#>>FalseTrueTrue实例:输入两个整数求和s=input()numbers=s.split()print(int(numbers[0])+int(numbers[1]))若输入:34则:s为:"34"numbers为:["3","4"]输出:7字符串分割成列表若x是字符串,则x.split()的值是一个列表,包含字符串x经空格、制表符、换行符分隔得到的所有子串print("34\t\t45\n7".split())#>>['34','45','7']#\t是制表符,\n是换行符号
print("abcdhello".split())#>>['ab','cd','hello']
s="1234"
lst=s.split()
print(lst)#>>['12','34']print("abcd".split())#>>['abcd']print(input().split()[2][1])输入为abcdef1234567输出是:abcdef2dABD提交C单选题1分此题未设答案print(input().split()[2][1])输入为abcdef1234567输出是:abcdef2dABCD提交单选题1分程序顶格书写64程序每行前面不能留空格!(例外后面讲)OK!乱加空格,错!学会看提示信息信息科学技术学院计算概论C教材Python程序设计基础及实践(慕课版)郭炜编著人民邮电出版社慕课:中国大学MOOC实用Python程序设计/course/PKU-1460924165?from=searchPage算术运算、逻辑运算和分支语句信息科学技术学院68算术运算信息科学技术学院宁夏中卫沙坡头算术运算符Python支持以下算术运算
+
加法
-
减法(双操作数),取相反数(单操作数)
*
乘法/除法
,结果是小数。即便能整除也是小数 %取模(求余数)
// 求商,结果取整数部分,不要余数 **求幂算术表达式a=(3+2)*(6-3)/2print(a) #>>7.5print(10/8) #>>1.25print(10%8) #>>2print(15/4) #>>3.75print(15//4) #>>3print(3.4/2.2) #>>1.5454545454545452print(3.4//2.2) #>>1.0print(2**3) #>>8print(-9//4)#>>-3往小里取整算术表达式/计算的结果都是小数,哪怕能整除z=10/2print(z) #>>5.0
-x
相当于0-xa=10print(-a) #>>-10print(-a*3) #>>-30等价于(–a)*3print(3+-5)#>>-2算术表达式
有小数的算术表达式,结果就是小数z=10.0-10print(z) #>>0.0z=7.5–2.5print(z) #>>5.0print(2+0*4.5) #>>2.0print(2+10/5) #>>4.0
算术运算符优先级第一级:
**第二级: -(求相反数)
第三级: *///%第四级: +-(减法)可以用()指定计算顺序:(3+4)*(1+2)记不得优先级就用()算术运算的同时赋值
+= a+=b 等价于a=a+b
-= a-=b 等价于a=a-b
*=
/=
%=//=
**=算术运算的同时赋值a=6a/=3print(a) #>>2.0a**=3print(a) #>>8.0常见问题或注意事项数学上的运算符号或代数式写法,不是拿到程序里就能直接用的!比如|x|在程序里并不能求x的绝对值,而是没定义,会出错!2(x+3)(4+x)这样的表达式也不能在程序里写!应该写:2*(x+3)*(4+x)乘法就一定要用'*'!2*b不能写成2b!常见问题或注意事项/的结果一定是小数。一个算术表达式,只要有一个操作数是小数,其结果就一定是小数。如果x是小数print(x)就会打出小数形式,哪怕x=4/2。如果题目要求是整数,就要注意了,不要把整数当小数打出来。print(4/2)打出2.0常见问题或注意事项/是÷
,不是分数线因此a/b*c是a÷
b×c,不是a/(b*c)print(4+6/2)的结果是77.05.05ACD提交B单选题1分此题未设答案print(4+6/2)的结果是77.05.05ABCD提交单选题1分关系运算符
逻辑运算符
逻辑表达式信息科学技术学院
郭炜韩国济州岛火山口六种关系运算符用于比较大小相等
==不等
!=大于
>小于
<大于等于
>=小于等于
<=比较的结果是bool类型,成立则为True,反之为Falsebool类型数据只有两种取值,True或False关系运算符和bool类型83print(3<5) #>>True
print(4!=7) #>>True
a=4
print(2<a<6<8) #>>True
print(2<a==4<6) #>>True
print(2<a>5) #>>False
b=a<6
print(b) #>>True
print(b==1) #>>True
print(b==2) #>>False
b=a>6
print(b==0) #>>Truea=True
print(a==1) #>>True关系运算符和bool类型84关系运算符也能比较字符串(按字典序,大小写相关)a="k" print(a=="k") #>>True
a="abc"
print(a=="abc") #>>True
print(a=="Abc") #>>False
print("abc"<"acd") #>>True
print("abc"<"abcd") #>>Trueprint("abc">"Abc") #>>True
关系运算符和bool类型85逻辑运算符用于表达式的逻辑操作,有andornot三种,操作的结果是True或False与:exp1andexp2当且仅当exp1和exp2的值都为True(或相当于True)时,结果为True(或相当于True)n=4
n>4andn<5 #false
n>=2andn<5andn%2==0#true
print(5andFalse)#>>False
print(4andTrue)#>>True逻辑运算符和逻辑表达式86
0,""(空字符串),[](空表),None
都相当于False(但除0以外都不等于False)
非0的数,非空的字符串和非空列表,都相当于True(但除1以外,都不等于True)True和1完全等价,False和0完全等价True==1 #TrueFalse==0 #True""==False #False2==True #False[]==False #False[2,3]==True #False什么相当于True或False87或:exp1orexp2当且仅当exp1和exp2的值都为False(或相当于False)时,结果为False
(或相当于False) n=4
n>4orn<5#True
n<=2orn>5#False
逻辑运算符和逻辑表达式88非:notexpexp值为True(或相当于True)时,结果为Falseexp值为False(或相当于False)时,结果为True not4<5 #False not5 #False not0 #True
not"abc" #False
not"" #True
not4<5and4>6 #False
not[] #True
not[1] #False
逻辑运算符和逻辑表达式89print(3<4or4>5and1>2) #>>True
print((3<4or4>5)and1>2) #>>Falsenot4<5and4>6即(not4<5)and(4>6)逻辑运算符的优先级not>and>or90exp1andexp2:如果已经算出表达式exp1为假,那么整个表达式的值肯定为假,于是表达式exp2就不需要再计算exp1orexp2:如果已经算出exp1为真,那么整个表达式必定为真,于是exp2也不必计算逻辑运算符和逻辑表达式逻辑表达式是短路计算的,即对逻辑表达式的计算,在整个表达式的值已经能够断定的时候即会停止91
算术运算符***///%+-
关系运算符<>==!=<=>=逻辑运算符 notandor记不得就勤用()print(3+2<5) #>>False
print(3+(2<5)) #>>4,因2<5相当于1
各种运算符的优先级从高到低:92以下程序输出几个Trueprint([]==False)print(not[])print(0==False)print(1==True)print(not"")5432ABCD提交单选题1分条件分支语句(if语句)信息科学技术学院
郭炜美国加州太浩湖条件分支语句
有时,并非所有的程序语句都要被顺序执行到,会希望满足某种条件就执行这部分语句,满足另一条件就执行另一部分语句。这就需要“条件分支语句”95条件分支语句96if表达式1:
语句组1elif
表达式2:
语句组2
...#可以有多种个elifelif表达式n:
语句组nelse:
语句组n+1
依次计算表达式1、表达式2…只要碰到一个表达式i为真(True或相当于True),则执行语句组i(前面为假的表达式对应的语句组不会被执行),且后面的表达式不再计算,后面的语句组也都不会被执行。若所有表达式都为假(False或相当于False),则执行语句组n+1
注意,缩进的前一行末尾有'
:'可以没有elif,也可以没有else,也可以都没有条件分支语句if表达式1:
语句组1else:
语句组2if表达式1:
语句组1elif
表达式2:
语句组2if表达式1:
语句组1Python程序的语句前面不能加空格或制表符,除非:1.它在if语句中的某个“语句组”里面2.在for,while等语句的语句组里面3.在函数体里面4条件分支语句的缩进98if语句中的语句组,每条语句左边必须缩进,且缩进情况必须一样(对齐)ifint(input())==5:
print("a",end="")
print("b")
输入:5 输出:ab输入:4 无输出条件分支语句的缩进99if语句中的语句组,每条语句左边必须缩进,且缩进情况必须一样(对齐)ifint(input())==5:
print("a",end="")
print("b")
输入:4 输出:b条件分支语句的缩进100if语句中的语句组,每条语句左边必须缩进,且缩进情况必须一样(对齐)ifint(input())==5:
print("a",end="")
print("b")
出错!没有对齐的缩进!条件分支语句的缩进101if"ok":
print(“ok”) #>>ok
if"":
print(“nullstring”) #不执行,故无输出
a=[4,2]
ifa:
print(a) #>>[4,2]
if20:
print(20) #>>20
if0:
print(0) #不执行,故无输出什么相当于True或False102例题:
写一个判断整数奇偶性的程序,要求输入一个整数,如果是奇数,就输出“It'sodd.”,如果是偶数,就输出“It'seven.”。ifint(input())%2==1:
print("It'sodd")
else:
print("It'seven")
if语句示例在一条if语句的某个分支(语句组)里,还可以再写if语句。a=int(input())
ifa>0:
ifa%2:
print("good")
else:
print("bad")输入:
4 输出:bad
输入:
3 输出:good输入:
-1 无输出if语句嵌套在一条if语句的某个分支(语句组)里,还可以再写if语句。a=int(input())
ifa>0:
ifa%2:
print("good")
else:
print("bad")输入:
4 无输出输入:
3 输出:good输入:
-1 badif语句嵌套if语句实例例:输入密码password="python"userInput=input()#等待用户输入密码ifuserInput==password:
#==判断两边的表达式值是否相等print("对了!")else:print("错了")106信息科学技术学院郭炜分支语句例题美国黄石公园大棱镜温泉if语句实例:温度转换程序tmpStr=input("请输入带有符号的温度值:")#tmpStr是变量名,随便取啥都行iftmpStr[-1]in['F','f']:#如果输入华氏温度
C=((float(tmpStr[0:-1]))-32)/1.8 print("转换后的温度是"+str(C)+"C")eliftmpStr[-1]in"Cc":#如果输入摄氏温度
F=1.8*eval(tmpStr[0:-1])+32 print("转换后的温度是"+str(F)+"F")#str将F转字符串else: print("输入格式错误")#用float替代eval也可以请输入带有符号的温度值:45F转换后的温度是7.222222222222222C请输入带有符号的温度值:8.2C转换后的温度是46.76F字符串切片若s是一个字符串,则:s[x:y]是s的从下标x到下标y的左边那个字符构成的子串(切片)print("12345"[1:3]) #>>23a="abcdef"
print(a[2:-1]) #>>cdeprint(a[0:6]) #>>abcdef不要把if...else或if...elif...else写成多个ififa>5:
print("xxx")a=3
else:print(b)常见错误ifa>5:
print("xxx")
a=3
ifa<=5print(b)=中可能把a的值改成了<=5。写多个if,哪些代码会被执行,哪些不会被执行,很容易搞错。例题:请写一个程序,该程序输入一个年份,根据该年份是否是建国整十周年、建党整十周年以及是否是闰年给出不同的输出。if语句嵌套year=int(input())
ifyear<=0:
print("Illegalyear")
else:
print("Legalyear.")
ifyear>1949and(year-1949)%10==0:#建国整十
print("Lukyyear.")
elifyear>1921andnot((year-1921)%10):#建党整十
#只是为了演示not的用法,没必要这么写
print("Goodyear.")
elifyear%4==0andyear%100oryear%400==0:
#year%100若不为0,则year%100就相当于True print("Leapyear")#闰年
else:
print("Commonyear.")-2↙Illegalyear.
1959↙Legalyear.Lukyyear.
1931↙Legalyear.Goodyear.
2008↙Legalyear.Leapyear.
2013↙Legalyear.Commonyear.输出格式控制信息科学技术学院甘肃张掖七彩丹霞(航拍)输出格式控制字符串中的格式控制符:%s表示此处要输出一个字符串%d表示此处要输出一个整数%f表示此处要输出一个小数%.nf表示此处要输出一个小数,保留小数点后面n位,四舍六入,五则可能入也可能舍。注意,有'.'
格式控制符只能出现在字符串中!输出格式控制h=1.746print("Mynameis%s,Iam%.2fmtall."%("tom",h))print("Myageis%d."%18)print("%d%s"%(18,"hello"))print("%.2f,%.2f"%(5.225,5.325))#>>5.22,5.33输出:Mynameistom,Iam1.75mtall.Myageis18.18hello5.22,5.33输出格式控制name="tom"h=1.746"Mynameis%s,Iam%.2fmtall."%("tom",h)是个字符串。比下面这个等价字符串简洁:"Mynameis%s,"%name+"Iam%.2fmtall."%h常见问题或注意事项题目:在一行输入两个小数x,y,请输出(x+y)*x的值,保留小数点后面5位错误解法:s=input().split()x,y=float(s[0]),float(s[1])m='%.5f'%(x+y)z=float(m)*xprint("%.5f"%z)常见问题或注意事项错误解法:s=input().split()x,y=float(s[0]),float(s[1])m='%.5f'%(x+y)z=float(m)*xprint("%.5f"%z)x+y本来就是小数没有必要先转成字符串,又转成小数。结果要保留小数点后面5位,并非中间的计算过程也要保留小数点后面5位信息科学技术学院119
实用Python程序设计循环语句信息科学技术学院120for循环语句信息科学技术学院
郭炜内蒙古阿斯哈图石林循环语句有时,需要重复多次执行一系列语句,因此需要循环语句122for循环语句for<variable>in<sequence>:<statements1>else:<statements2>依次对sequence中的每个值,执行<statements1>然后再执行<statements2>。通常不需要else部分sequence可以是range(..),也可以是字符串、列表、元组、字典、集合123for循环语句foriinrange(5):#[0,5)print(i)01234foriinrange(5,9):#[5,9)print(i)5678124for循环语句foriinrange(0,10,3):#步长3print(i)0369foriinrange(-10,-100,-30):print(i)-10-40-70125for循环语句foriinrange(0): print(i)无输出foriinrange(2,2):print(i)无输出126foriinrange(3,12,3):print(i,"",end="")输出结果是:36936912345678910113456789101112BCD提交A单选题1分此题未设置答案,请点击右侧设置按钮foriinrange(3,12,3):print(i,"",end="")输出结果是:36936912345678910113456789101112ABCD提交单选题1分for循环遍历列表–写法1a=['Google','Baidu','IBM','Taobao','QQ']foriinrange(len(a)): #len,求列表长度(元素个数)print(i,a[i])0Google1Baidu2IBM3Taobao4QQlen也可以用来求字符串长度,元组、集合、字典元素个数print(len("abc"))#>>3129for循环遍历列表–写法2a=['Google','Baidu','IBM','Taobao','QQ']foriina: print(i)GoogleBaiduIBMTaobaoQQ130for循环遍历字符串forletterin'Taobao': print(letter)Taobao131break语句sites=["Baidu","Google","IBM","Taobao"]forsiteinsites:ifsite=="IBM":print("OK")print("site:
"+site)else:print("Nobreak")print("Done!")132site:Baidusite:GoogleOKsite:IBMsite:TaobaoNobreakDone!break语句sites=["Baidu","Google","IBM","Taobao"]#listforsiteinsites:#对sites中的每个值siteifsite=="IBM":print("OK")
break #跳出循环
print("site:
"+site)else:print("Nobreak")print("Done!")else子句在循环结束时会执行,但是如果break了,则不会执行133site:Baidusite:GoogleOKDone!continue语句forletterin'Taobao':
ifletter=='o':#字母为o时跳过输出
continue #直接跳到下次循环print('当前字母:',letter)当前字母:T当前字母:a当前字母:b当前字母:a134连续输出26个字母foriinrange(26):
print(chr(ord("a")+i),end="")
abcdefghijklmnopqrstuvwxyz字母的ASCII编码是连续的135字符的编码ord(x)求字符x的编码(字符就是长度为1的字符串)chr(x)求编码为x的字符可以用8个连续的0或1(即1个字节)来表示一个字母、数字或标点符号,比如用“00100000”表示空格,用“01100001”表示字母“a”,用“01100010”表示字母“b”,用“01100011”表示字母“c”……。由8个0或者1的组成的串,一共有28即256种不同的组合,这就足以表示10个阿拉伯数字以及英语中用到的所有字母和标点符号了。此即为ASCII编码方案。136连续输出0-9foriinrange(10):print(chr(ord("0")+i),end="")0123456789'0'-'9'的ASCII编码是连续的137print(chr(ord("A")+4))结果是10169EeABD提交C单选题1分此题未设置答案,请点击右侧设置按钮print(chr(ord("A")+4))结果是10169EeABCD提交单选题1分for循环例题信息科学技术学院郭炜俄罗斯圣彼得堡圣以撒教堂例题1.输入n个整数求和输入第一行是整数n,n>=1后面有n行,每行一个整数输出输出后面那n个整数的和样例输入3128样例输出11
141例题1.输入n个整数求和n=int(input())total=0foriinrange(n):#做n次 total+=int(input())#每次读入一行print(total)
142例题2.从小到大输出n的因子输入一个正整数n,从小到大输出它的所有因子n=int(input())
forxinrange(1,n+1):
ifn%x==0:
print(x,"",end="")15↙13515143例题3.从大到小输出n的因子输入一个正整数n,从大到小输出它的所有因子
n=int(input())
forxinrange(n,0,-1):#步长-1
ifn%x==0:
print(x,"",end="")
15↙15531144多重循环信息科学技术学院
郭炜美国拱门国家公园多重循环循环可以嵌套,形成多重循环:
foriinrange(n):
forjinrange(m):
#内重循环的执行次数一共是n×m次
146多重循环例题1:多次求n个数的和输入第一行是整数m,m>=1,表示有m组数据接下来就是m组数据对于每组数据:第一行是整数n,n>=1接下来是n行,每行一个整数输出对每组数据,输出后面那n个整数的和147样例输入2312321020样例输出630多重循环例题1:多次求n个数的和m=int(input())foriinrange(m):#m组数据,所以要处理m次
n=int(input())total=0foriinrange(n):#n个数,每个一行,所以要inputn次
total+=int(input())print(total)148total=0foriinrange(2):forjinrange(1,3):total+=i+jprint(total)输出结果是:681012ACD提交B单选题1分此题未设置答案,请点击右侧设置按钮total=0foriinrange(2):forjinrange(1,3):total+=i+jprint(total)输出结果是:681012ABCD提交单选题1分例题:给定正整数n和m,在1至n这n个数中,取出两个不同的数,使得其和是m的因子,问有多少种不同的取法。输出这些取法。151多重循环例题2:取两个数例题:给定正整数n和m,在1至n这n个数中,取出两个不同的数,使得其和是m的因子,问有多少种不同的取法。输出这些取法。思路:穷举1-n这n个数中取两个数的所有取法,对每一种取法,判断其和是不是m的因子152多重循环例题2:取两个数例题:给定正整数n和m,在1至n这n个数中,取出两个不同的数,使得其和是m的因子,问有多少种不同的取法。输出这些取法。思路:穷举1-n这n个数中取两个数的所有取法,对每一种取法,判断其和是不是m的因子第一个数取1,第二个数分别取2,3,n第一个数取2,第二个数分别取3,4,n第一个数取n-2,第二个数分别取n-1,n第一个数取n-1,第二个数取n153多重循环例题3例题:给定正整数n和m,在1至n这n个数中,取出两个不同的数,使得其和是m的因子,问有多少种不同的取法。输出这些取法。total=0#取法总数
lst=input().split()
n,m=int(lst[0]),int(lst[1])
foriinrange(1,n):#取第一个数i,共n-1种取法
forjinrange(i+1,n+1):#第二个数要比第一个数大,以免取法重复
ifm%(i+j)==0:
print(i,j)
total+=1
print(total)
154918↙121518242736457多重循环例题3只会跳出当前那重循环,不会跳出多重循环例题:给定正整数n和m,在1至n这n个数中,取出两个不同的数x,y,使得x<y且x+y是m的因子。要求输出的数对里面,x不重复,且y尽可能小。输出这些取法。lst=input().split()n,m=int(lst[0]),int(lst[1])foriinrange(1,n):#取第一个数i,共n-1种取法
forjinrange(i+1,n+1):#第二个数要比第一个数大,以免取法重复
ifm%(i+j)==0:print(i,j)
break#后面的j不用再取了,直接换下一个i155多重循环中的break918↙12243645只会回到当前那重循环的开头156多重循环中的continuewhile循环信息科学技术学院
郭炜荷兰阿姆斯特丹库肯霍夫公园while循环语句while
逻辑表达式exp
:
语句组1else:
语句组2判断exp是否为真,若为真,转2),若为假,转3)执行语句组1,回到1)执行语句组2继续往下执行158while循环语句while
逻辑表达式exp
:
语句组1判断exp是否为真,若为真,转2),若为假,转3)执行语句组1,回到1)继续往下执行159while循环语句count=0whilecount<5:print(count,"小于5")count=count+1else:print(count,"大于或等于5")1600小于51小于52小于53小于54小于55大于或等于5while循环语句whileTrue:
ifexp:
break
不停执行,直到exp为真时跳出循环161连续输出26个字母i=0
whilei<26:
print(chr(ord("a")+i),end="")
i+=1
abcdefghijklmnopqrstuvwxyz字母的ASCII编码是连续的162while循环语句示例1例题:输入一个正整数n,从小到大输出它的所有因子n=int(input())
x=1
whilex<=n:
ifn%x==0:
print(x,"",end="")
x+=1
15↙13515163while循环语句示例2例题:提示用户输入密码,密码不正确则提示不正确,
然后要求输入,密码正确则提示成功,然后结束。密码是pkuwhile(input("请输入密码:")!="pku"): print("密码不正确!")print("密码输入成功!") 请输入密码:bba↙密码不正确!请输入密码:std↙密码不正确!请输入密码:pku↙密码输入成功!164while循环语句示例2输入三个整数,求它们的最小公倍数解法:枚举,一个个试s=input().split()x,y,z=int(s[0]),int(s[1]),int(s[2])n=1whileTrue:ifn%x==0andn%y==0andn%z==0:print(n)
breakn=n+1165while循环语句示例2输入三个整数,求它们的最小公倍数解法:枚举,一个个试s=input().split()x,y,z=int(s[0]),int(s[1]),int(s[2])n=1whilenot(n%x==0andn%y==0andn%z==0): n+=1print(n)166while循环语句示例2输入三个整数,求它们的最小公倍数,改进解法改进之处:即便是枚举,没必要试的,也不要去试,这样速度才快s=input().split()x,y,z=int(s[0]),int(s[1]),int(s[2])n=m=max(x,y,z)#从三者里面最大的开始试whileTrue:ifn%x==0andn%y==0andn%z==0:print(n)break
n+=m#没必要一个个试,而是每隔m个试一下(还可进一步改进)167异常处理信息科学技术学院
郭炜锡林郭勒草原平顶山用while语句和异常处理进行输入在Openjudge做题时,有些题目,输入数据没有结束标志,也不告诉你有多少数据。例如:输入若干行,每行若干整数,求所有整数的最大值输入样例出样例:87如何判断输入结束,就是需要解决的问题169用while语句和异常处理进行输入输入若干行,每行若干整数,求所有整数的最大值s=input()lst=s.split()maxV=int(lst[0])try:#异常处理whileTrue:lst=s.split()forxinlst:maxV=max(maxV,int(x))s=input()#输入数据已经没有了还执行input,会产生异常except:pass #pass语句啥都不做print(maxV)15
236↙531↙34↙Ctrl+Z↙23170异常处理try:<语句组1>except:<语句组2>如果在<语句组1>执行过程中出现了异常(runtimeerror),程序立即从语句组1中跳出,去执行<语句组2>,然后再继续往下执行。如果<语句组1>执行正常完,则程序继续往下执行,不会执行<语句组2>常见的异常有:不合适的转换,例如int("abc")int("23.34")float("abc")输入已经结束(已经没有输入数据了)后,还执行input()在openjudge做题常见除法除数为0整数和字符串相加5)列表下标越界(比如3个元素的列表用到了下标4)171异常处理try:n=int(input())print("hello")a=100/nprint(a)except:print("error")print("end")1725↙hello20.0end0↙helloerrorendabc↙errorend循环综合例题信息科学技术学院
郭炜旧金山九曲花街例题1.求斐波那契数列第k项菲波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。给出一个正整数k,要求菲波那契数列中第k个数是多少。
输入:输入一行,包含一个正整数k。(1<=k<=46)输出:输出一行,包含一个正整数,表示菲波那契数列中第k个数的大小样例输入19样例输出4181174解法:迭代,不停地由已知推未知k=int(input())ifk==1ork==2:print(1)else:a1=a2=1foriinrange(k-2):a1,a2=a2,a1+a2print(a2)例题1.求斐波那契数列第k项例题2.求阶乘的和给定正整数n,求不大于n的正整数的阶乘的和(即求1!+2!+3!+...+n!)输入输入有一行,包含一个正整数n(1<n<12)。输出输出有一行:阶乘的和。样例输入5样例输出153176例题2.求阶乘的和解法1:n=int(input())s=0foriinrange(1,n+1):f=1#存放i阶乘
forjinrange(1,i+1):f*=j#此操作一共做1+2+3+...+n次
s+=fprint(s)重复计算多。比如算3!时算了一遍1*2*3,算4!时又算一遍1*2*3改进:1*2*3只要算一遍就应该记下来,下次算4!直接用它177例题2.求阶乘的和更快的解法2:n=int(input())s,f=0,1foriinrange(1,n+1):f*=is+=fprint(s)f值变化过程:1*2,1*2*3,1*2*3*4178例题3.输入正整数n(n>=2),求不大于n的全部质数解法1:n=int(input())foriinrange(2,n+1):#每次判断i是否是质数
ok=True #开始假设i是质数forkinrange(2,i):ifi%k==0:ok=Falsebreakifok:print(i)179例题3.输入正整数n(n>=2),求不大于n的全部质数解法1:n=int(input())foriinrange(2,n+1):#每次判断i是否是质数
ok=True #开始假设i是质数forkinrange(2,i):ifi%k==0:ok=Falsebreakifok:print(i)#此解法做了没必要的尝试,偶数,以及k大于i的平方根后就不必再试180例题3.输入正整数n(n>=2),求不大于n的全部质数改进的解法2:n=int(input())print(2)foriinrange(3,n+1,2):#步长2,只判断奇数
ok=Trueforkinrange(3,i,2):ifi%k==0:ok=Falsebreakifk*k>i:#大于根号i的数就不用试了breakifok:print(i)181信息科学技术学院182
实用Python程序设计函数和递归信息科学技术学院183函数信息科学技术学
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年大数据审计冷链运输协议
- 2026人民网内蒙古分公司招聘媒介顾问笔试历年难易错考点试卷带答案解析
- 2025辽宁交投集团所属物产公司招聘3人笔试历年难易错考点试卷带答案解析
- 2026年农村电商发展及寄递物流体系测试题
- 2026年阿里中储粮仓储管理相关知识点测试
- 2026年经济学专业必学概念及理论练习题
- 2026年旅游业营销策略与市场分析题集
- 2026年旅游市场营销策略与实践案例题
- 职场沟通技巧提升2026年线上练习题库
- 2026年海信AI面试全流程解析与注意事项
- 数字经济与社会治理协同
- 加利福尼亚批判性思维技能测试后测试卷班附有答案
- 小学语文中高年级单元整体教学设计的实践研究(结题报告)
- 手术室护士与麻醉的护理配合试题
- 蜡疗操作评分标准
- 《针灸治疗》课件-第十节 耳鸣耳聋
- 磨煤机检修作业三措两案(2020版)
- 防震减灾科普先行防震减灾知识宣传课件
- 福建省南平一中2023年中考物理自主招生试题(实验班含解析)
- GB/T 4169.2-2006塑料注射模零件第2部分:直导套
- GB/T 27663-2011全站仪
评论
0/150
提交评论