一、条件语句
1、概述:
2、语法格式:
if 条件1:
语句序列1
elif 条件2:
语句序列2
.......
elif条件K:
语句序列K
else:
语句序列K+1
if表示“如果”,elif表示“否则如果”,else表示“否则”。最简单的条件语句只有if,elif和else都是可选项,根据需要决定是否使用。
3、pass
pass表示一个空操作,只起到一个占位作用,执行时什么都不做。 例如:
1 score=eval(input('请输入成绩(0~100之间的整数):') 2 if score>=60: 3 pass #什么都不做 4 else: 5 print('不及格')
在某些必要的语句(如条件语句中的各语句序列)还没有编写的情况下,如果要运行程序,则可以先在这些必要语句处写上“pass”,使得程序不存在语法错误、能够正常运行。实际上,pass与条件语句并没有直接关系,在程序中所有需要的地方都可以使用pass作为占位符。比如,在后面将要学习的循环语句中,也可以使用pass作为占位符。
二、循环语句
1、概述
通过循环,可以使得某些语句重复执行多次。
例如:我们要计算从1到n的和,可以使用一个变量sum=0保存求和结果,并设置一个变量i、让其遍历1到n这n个整数;对于i的每一个取值,执行sum+=i的运算;遍历结束后,sum中即保存了求和结果。
提示:“遍历”这个词在计算机程序设计中经常会用到,其表示对某一个数据中的数据元素按照某种顺序进行访问,使得每个数据元素访问且仅访问一次
2、for循环
(1)用于遍历可迭代对象中的每一个元素,并根据当前访问的元素做数据处理,其语法格式为:
for 变量名 in 可迭代对象:
语句序列
例如:
1 d={'Python':1,'C++':2,'Java':3} 2 for k in d: #注意for后要写上“:” 3 print('%s:%d'%(k,d[k]))
Python:1
C++:2
Java:3
注意:使用for遍历字典中的元素时,每次获取到的是元素的键,通过键可以再获取到元素的值
(2)使用for循环时,如果需要遍历一个数列中的所有数字,则通常利用range函数生成一个可迭代对象。range函数的语法格式如下:
range([beg, ]end[, step]),例如:
1 print(list(range(1,5,2))) #输出“[1, 3]” 2 print(list(range(5,-1,-2))) #输出“[5, 3, 1] ” 3 print(list(range(1,5))) #输出“[1, 2, 3, 4] ” 4 print(list(range(5))) #输出“[0, 1, 2, 3, 4] ”
提示:range函数返回的是一个可迭代对象,通过list函数可将该对象转换为列表
(3)例题:
使用for循环实现1到n的求和。
1 n=eval(input('请输入一个大于0的整数:')) 2 sum=0 3 for i in range(1,n+1): #range函数将生成由1到n这n个整数组成的可迭代对象 4 sum+=i 5 print(sum) #输出求和结果for循环
使用for循环实现1到n之间所有奇数的和。
1 n=eval(input('请输入一个大于0的整数:')) 2 sum=0 3 for i in range(1,n+1,2): #步长2,因此会生成1、3、5、…等奇数 4 sum+=i 5 print(sum) #输出求和结果
3、while循环
语法格式:while 循环条件:
语句序列
例题:使用while循环实现1到n的求和。
1 n=eval(input('请输入一个大于0的整数:')) 2 i,sum=1,0 #i和sum分别赋值为1和0 3 while i<=n: #当i<=n成立时则继续循环,否则退出循环 4 sum+=i 5 i+=1 #注意该行也是while循环语句序列中的代码,与第4行代码应有相同缩进 6 print(sum) #输出求和结果while循环
使用while循环实现1到n之间所有奇数的和。
1 n=eval(input('请输入一个大于0的整数:')) 2 i,sum=1,0 3 while i<=n: 4 sum+=i 5 i+=2 6 print(sum) #输出求和结果
4、索引
(1)如果希望不仅获取到每一个元素的值,而且能获取到每一个元素的索引,则可以通过len函数获取可迭代对象中的元素数量,再通过range函数生成由所有元素索引组成的可迭代对象。
同时访问索引和元素值。
1 ls=['Python','C++','Java'] 2 for k in range(len(ls)): #k为每一个元素的索引 3 print(k,ls[k]) #通过ls[k]可访问索引为k的元素
输出:
0 Python
1 C++
2 Java
(2)也可以利用enumerate函数返回的索引序列对象同时获得每个元素的索引和值
1 ls=['Python','C++','Java'] 2 for k,v in enumerate(ls): #k保存当前元素索引,v保存当前元素值 3 print(k,v)
输出:0 Python 1 C++ 2 Java
1 ls=['Python','C++','Java'] 2 for k,v in enumerate(ls,1): #索引从1开始(默认为0) 3 print(k,v)
输出:1 Python
2 C++
3 Java
5、break、continue和else
(1)break用于跳出for循环或while循环。对于多重循环情况,跳出最近的那重循环。
例题:求1~100之间的素数。
1 for n in range(2,101): #n在2~100之间取值 2 m=int(n**0.5) #m等于根号n取整 3 i=2 4 while i<=m: 5 if n%i==0: #如果n能够被i整除 6 break #跳出while循环 7 i+=1 8 if i>m: #如果i>m,则说明对于i从2到m上的取值、都不能整除n,所以n是素数 9 print(n,end=' ') #输出n
输出结果:2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
(2)continue用于结束本次循环并开始下一次循环。对于多重循环情况,作用于最近的那重循环。
例题: 3的倍数的整数求和。
1 sum=0 2 while True: #因为循环条件设置为True,所以无法通过条件不成立退出循环(永真循环) 3 n=eval(input('请输入一个整数(输入0结束程序):')) 4 if n==0: #如果输入的整数是0,则通过break跳出循环 5 break 6 if n%3!=0: #如果n不是3的倍数,则不做求和运算 7 continue #通过continue结束本次循环、开始下一次循环,即转到第2行代码 8 sum+=n #将n加到sum中 9 print('所有是3的倍数的整数之和为:%d'%sum)
执行程序时:依次输入10、15、20、25、30、0,则最后输出45(即15+30的结果)。
(3)else在for循环和while循环后面可以跟着else分支,当for循环已经遍历完列表中所有元素或while循环的条件为False时,就会执行else分支。
例题:素数判断
1 n=eval(input('请输入一个大于1的整数:')) 2 m=int(n**0.5) #m等于根号n取整 3 for i in range(2,m+1): #i在2至m之间取值 4 if n%i==0: #如果n能够被i整除 5 break #跳出while循环 6 else: #注意这个else与第3行的for具有相同的缩进,所以它们是同一层次的语句 7 print('%d是素数'%n)else
执行程序时:
如果输入5,则会输出“5是素数”;
如果输入10,则不会输出任何信息。
披荆斩棘,仗剑天涯