Python流程控制

2015/04/05 Python

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循环。

Search

    微信好友

    博士的沙漏

    Table of Contents