Python学习之 流程控制语句

  程序结构

  程序设计中有 3 种基础的结构,分别是顺序结构、选择结构和循环结构。

  本章节之前编写的多数例子都是顺序结构的,这一张主要介绍一下选择结构和循环结构。

  选择语句

  最简单的 if 语句

  Python 中使用 if 保留字来组成选择语句,其最简单的语法形式如下:

  if 表达式:

  语句块

  其中,表达式可以是一个单纯的布尔值或者变量,也可以是比较表达式或逻辑表达式,如果表达式为真,则执行 “语句块”,如果表达式为假,就跳过 “语句块”,继续执行后面的代码。

  示例1:

  number = 5

  if number == 5:

  print( "number 的值是5" )

  注意:if 语句后面的冒号 ‘:’ 很容易被遗忘

  示例2:

  if bmi < 18.5:

  print( "您的 BMI 指数为:" + str(bmi) )

  print( "您的体重过轻了。。。" )

  注意:第二个 print() 没有使用缩进,无论 bmi 的值是否小于 18.5 都会执行,如果第二个 print() 也使用了缩进,那么只有条件成立时才会执行

  if…else 语句

  if 表达式:

  语句块1

  else:

  语句块2

  程序中使用 if…else 语句时,如果出现 if 语句多余 else 语句的情况,那么该 else 语句将会根据缩进确定该 else 语句是属于哪个 if 语句的。

  示例:

  a = 0

  if a >= 0:

  if a > 0:

  print( "a 大于零" )

  else:

  print( "a 小于零" )

  if…elif…else 语句

  在 Python 中是没有 switch 语句的,所以实现多重选择的功能,只能使用 if…elif…else 多分支语句或者 if 语句的嵌套

  if 表达式1:

  语句块1

  elif 表达式2:

  语句块2

  elif 表达式3:

  语句块3

  ...

  else:

  语句块n

  示例:

  age = int( input( "请输入您的年龄:" ) )

  if age <= 18:

  print( "您的年龄还小,要努力学习哦!" )

  elif 18 < age <= 30:

  print( "您现在的阶段正是努力奋斗的黄金阶段!" )

  elif 30 < age <= 50:

  print( "您现在的阶段正是人生的黄金阶段!" )

  else:

  print( "最美不过夕阳红!" )

  if 语句的嵌套

  if 选择语句可以有多种嵌套方式,开发程序时,可以根据自身需要选择合适的嵌套方式,但一定要严格控制好不同级别代码块的缩进量

  示例:

  # 判断输入年份是不是闰年

  # 判断方法:四年一润,百年不闰,四百年再润

  year = int( input( "请输入年份:" ) )

  if year % 4 == 0:

  if year % 100 == 0:

  if year % 400 == 0:

  print( year, "年是闰年" )

  else:

  print( year, "年不是闰年" )

  else:

  print( year, "年是闰年" )

  else:

  print( year, "年不是闰年" )

  循环语句

  在 Python 中,循环主要有两种,一种是重复一定次数的循环,称为计数循环,如 for 循环;另一种是一直重复,直到条件不满足时才结束的循环,称为条件循环,如 while 循环。

  注意:在其它语言中,条件循环还包括 do…while 循环,但是在 Python 中是没有 do…while 循环的

  while 循环

  while 条件表达式:

  循环体 # 一组被重复执行的语句

  示例:郑州看胎记费用 http://www.zykdtj.com/

  print( "今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问何几 ?\n" )

  none = True # 作为循环条件的变量

  number = 0 # 计数的变量

  while none:

  number += 1

  if number % 3 == 2 and number % 5 == 3 and number % 7 == 2:

  print( "答曰:这个数是", number )

  none = False

  上述例子运行结果为 23

  在使用 while 循环语句时,一定不要忘记添加将循环条件变为 False 的代码,否则将出现死循环。

  for 循环

  for 迭代变量 in 对象:

  循环体

  其中,迭代变量用于保存读取出的值,而对象为要遍历或迭代的对象,该对象可以是任何有序的序列对象,如字符串、列表和元组等。

  示例1:

  print( "计算 1+2+3+...+100 的结果为:" )

  result = 0 # 保存累加结果的变量

  for i in range(101):

  result += i # 实现累加功能

  print(result) # 在循环结束时输出结果

  补充内容:上面代码中使用了 range() 函数,该函数为 Python 内置的函数,用于生成一系列连续的整数,多用于 for 循环语句中,其语法格式如下:

  range(start, end, step)

  start:用于指定计数的起始值,可以省略。如果省略,则从 0 开始。

  end:用于指定计数的结束值(但不包括该值),不能省略。当 range() 函数只有一个参数时,即表示指定计数的结束值。

  step:用于指定步长,即两数之间的间隔,可以省略。如果省略,则表示步长为 1。

  注意:在使用 range() 函数时,如果只有一个参数,那么表示指定的是 end;如果只有两个参数,则表示指定的是 start 和 end;只有三个参数都存在时,最后一个才表示步长。

  示例2:

  for i in range(1, 10, 2):

  print( i, end = ' ' )

  上述例子运行结果为 1 3 5 7 9

  如果想让 print() 语句输出的内容在一行上显示,使用 print() 函数时,不能直接加逗号,需要加上 ", end = ‘分隔符’ "

  循环嵌套

  在 Python 中,允许在一个循环体中嵌入另一个循环体,这称为循环嵌套。在 Python 中,for 循环和 while 循环都可以进行循环嵌套。

  示例:

  for i in range(1, 10, 1): # 输出 9 行

  for j in range(1, i + 1): # 输出与行数相等的列

  print( str(j) + " X " + str(i) + " = " + str(i * j) + "\t", end = "" )

  print(") # 换行

  上述例子输出 1-9 乘法口诀表

  break、continue 和 pass 语句

  break

  break 语句可以终止当前的循环,包括 while 和 for 在内的所有控制语句。

  break 语句一般会结合 if 语句进行搭配使用,表示在某种条件下跳出循环。如果使用嵌套循环,break 循环将跳出最内层的循环。

  示例:

  print( "今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二,问何几 ?\n" )

  for number in range(100):

  if number % 3 == 2 and number % 5 == 3 and number % 7 == 2: # 判断是否符合条件

  print( "答曰:这个数是", number ) # 输出符合条件的数

  break # 跳出循环

  continue

  continue 语句的作用没有 break 强大,它只能终止本次循环提前进入下一次循环。

  continue 语句一般会结合 if 语句进行搭配使用,表示在某种条件下,跳出当前循环的剩余语句,然后继续进行下一轮循环。如果使用嵌套循环,continue 语句将只跳过最内层的循环中的剩余语句。

  示例:

  total = 0 # 用于保存累加和的变量变量

  for number in range(1, 100):

  if number % 2 == 1: # 判断是否符合条件

  continue # 继续下一次循环

  total += number # 累加偶数的和

  print( "1 到 100 之间(不包括 100)的偶数和为:", total ) # 输出累加的和

  pass

  Python 中还有一个 pass 语句,表示空语句。它不做任何事,一般起到占位的作用。

  示例:

  for i in range(1, 10):

  if i % 2 == 0: # 判断是否为偶数

  print( i, end = ' ' )

  else: # 不是偶数

  pass # 占位符,不作任何操作


猜你喜欢

转载自blog.51cto.com/14335413/2517138