Python流程控制
顺序结构
Python语言把缩进作为语法的一部分,缩进层次相同且连续的一段代码就是一个顺序结构的代码块。运行时,代码块内的代码从上到下,依次被解释执行。
条件判断语句
条件语句是指根据条件表达式的不同,使程序跳转至不同的代码块。代码运行过程中,会根据条件选择不同的分支继续运行,这就是程序的分支结构。 Python的条件语句有:if、if-else和if-elif-else。Python语言使用if-else描述分支结构,支持嵌套,并将else if简写为elif。
下面来看几个判断成绩的例子。
- 判断成绩是否合格:
score = 95 #成绩 #二选一 if score >= 60: #如果成绩60分及以上,则输出“合格” print("合格") else: #否则,输出“不合格” print("不合格")
运行以上代码后,输出“合格”。
- 判断成绩是优秀、良好、及格还是不及格:
#多选一 if score >= 90: #如果成绩大于等于90 print("优秀") print("再接再厉") elif score <90 and score >=70: #如果成绩在70~90之间 print("良好") elif score < 70 and score >= 60: #如果成绩在60~70之间 print("及格") else: #其他情况 print("不及格")
运行以上代码后,输出“优秀”和“再接再厉”。
- 关键字if、elif和else后面的冒号(:)不能缺,这是语法规则。
- 每个判断条件下的代码块都必须缩进,这是Python的一大特点,即通过强行缩进来表明成块的代码。这样做的好处是代码十分清晰工整,坏处是稍不注意,代码块就会对不齐,运行就会出错。
下面来看一个判断闰年的例子。要判断是否是闰年,只要看年份是否满足条件:能被4整除,并且不能被100整除,或者能被4整除,并且又能被400整除。
year = input("请输入年份:") #通过命令行输入年份
year = int(year) #转换为整型
if (year%4==0 and year%100!=0) or (year%4==0 and year%400==0):
print("%d年是闰年"%year) #闰年
else:
print("%d年不是闰年"%year) #非闰年
- 第一行通过input( )函数实现从命令行中动态输入年份。
- if后面是判断闰年的条件表达式,由于and的优先级高于or,也可以省略圆括号。条件表达式还可以简写为:
if year%4==0 and (year%100!=0 or year%400==0):
- 通过print输出字符串文字。这是一个经过格式化的字符串,双引号中是将要格式化的字符串,其中的%d是格式化符号,表示整数。双引号后面跟%year,表示将变量year的值转换为整数后插入到%d的位置上。
循环语句
Python语言的循环结构有两种:for循环和while循环。
- for循环一般用于循环次数确定的场合,如遍历列表、字典等。
- while循环一般用于循环次数不确定的场合,每次循环之前都要对循环条件做判断。 为了避免“死循环”,在while循环体内通常都会存在影响循环条件的代码,除非希望while循环永不停止。
循环体内有两个特殊语句会影响到for循环和while循环,这就是continue和break语句。continue语句可以立即结束本次循环,开始下一个循环;break语句则是立即跳出循环,继续执行for或while循环后面的语句。
while循环
while循环的语法结构为:
while <条件>:
循环体
在给定的判定条件为True时执行循环体,否则,退出循环。 以下代码实现了打印5遍字符串的功能:
#1.使用while执行5次循环
n = 1 #记录次数
while n<=5: #n<=5为循环条件
print("cathy正在努力抄第%d遍课文"%n) #每次循环输出的文字
n += 1 #自增1
- while语句后要有半角冒号(:)。
- 循环体要有缩进。
- 每次循环n都会自增1,否则就会死循环。
for循环
for循环的语法结构为:
for <目标对象> in <对象集合>:
循环体
当执行for循环时,会逐个将对象集合中的元素赋给目标对象,然后为每个元素执行循环体。以下代码使用for循环实现了计数和遍历集合的功能:
#1.使用for执行5次循环
for n in range(1,6): #range()函数生成整数集合(1,2,3,4,5)
print("cathy正在努力抄第%d遍课文"%n) #每次循环输出文字
#2.遍历字符串所有字符
name = "cathy"
for n in name:
print(n) #每次循环分别输出c、a、t、h、y
#3.遍历列表中的所有项目
student = ["cathy",10,25] #记录姓名、年龄、体重
for item in student:
print(item) #每次循环分别输出cathy 10 25
break和continue
在循环过程中,有时需要终止循环或者跳过当前循环。Python使用break和continue来分别表示终止循环和跳过当前循环。
来看一个break的例子:实现在1~100之间,找到第一个能被3整除且能被8整除的整数。实现代码如下:
a = 1 #初始为1
while a<=100: #循环100次
if a%3==0 and a%8==0:
print("第一个能被3整除且能被8整除的整数是:%d"%a)
break #终止循环
a+=1 #每次循环自增1
再来看一个continue的例子:实现在1~100之间,找到所有不能被3和8整除的数。实现代码如下:
for i in range(1,101):
if i%3==0 and i%8==0:
continue
print("%d "%i)
- range(1,101)函数生成了一个包含1~100的整数集合,注意,不包括101。
- if语句判断的是能被3和8整除的数,使用continue跳过for循环剩下的代码,继续执行下一次循环。
while和for使用场景
一般情况下,while和for循环可以互相代替,但也有一些使用原则:
- 如果循环变量的变化,伴随着一些条件判断等因素,推荐使用while循环。
- 如果仅仅是遍历集合中所有的数据,没有一些条件判断因素,推荐使用for循环。