第九章、Python流程控制

第九章、Python流程控制

一、if语句

1.1、If选择语句

  • Python中的所有对象都支持比较操作

    •   可用于测试相等性、相对大小等。如果是复合对象,Python会检查其所有部分包括自动遍历各级嵌套对象;,直到可以得出最终结果。

  • 测试操作符

    •   ==:测试值的相等性。

    •   表达式测试对象的一致性。

  • Python中不同类型的比较方法

    •   数字:通过相对大小进行比较。
    •   字符串:按照字典次序逐字符进行比较。
    •   列表和元祖:自左至右比较各部分内容。
    •   字典:对排序之后的(键值)列表进行比较。
  • Python中真和假的含义
    •   非零数字为真,否则为假。
    • 非空对象为真,否则为假。
    • none则始终为假。
  • 三元运算符

    •   三元运算符通常在Python里被称为条件表达式,这些表达式基于真(true)/假(false)的条件判断,在Python 2.4以上才有了三元操作。

# 如果条件为真,返回真 否则返回假
condition_is_true if condition else condition_is_false

代码如下:

  >>> is_fat = True
  >>> state = "fat" if is_fat else "not fat"
  >>> state
  'fat'
  >>> state = "fat" if not is_fat else "not fat"
  >>> state
  'not fat'

它允许用简单的一行快速判断,而不是使用复杂的多行if语句。 这在大多数时候非常有用,而且可以使代码简单可维护。

1.2、If语法结构

根据Python的缩进规则,如果if语句判断是True,就把缩进的两行print语句执行了,否则,什么也不做。一般有三种用法,分别是:单分支、双分支和多分支,对应语法如下:

  # 单分支;
  if <expression>:
      <statement>
   
  # 双分支;
  if <expression>:
      <statement>
  else:
      <statement>
   
  # 多分支;
  if <expression>:
      <statement>
  elif <expression>:
      <statement>
  elif ...:
      <statement>
  else:
      <statement>

if语句执行有个特点,它是从上往下判断,如果在某个判断上是True,把该判断对应的语句执行后,就忽略掉剩下的elifelse

1.3、If使用示例

比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,用if语句实现:

  age = 20
  if age >= 18:
      print('your age is', age)
      print('adult')

也可以给if添加一个else语句,意思是,如果if判断是False,不要执行if的内容,去把else执行了:

  age = 3
  if age >= 18:
      print('your age is', age)
      print('adult')
  else:
      print('your age is', age)
      print('teenager')

当然上面的判断是很粗略的,完全可以用elif做更细致的判断:

  age = 3
  if age >= 18:
      print('adult')
  elif age >= 6:
      print('teenager')
  else:
      print('kid')

if判断条件还可以简写,比如写:

  x = 1
  if x:
      print('True')

只要x是非零数值、非空字符串、非空list等,就判断为True,否则为False

1.4、If结合input或raw_input

最后看一个有问题的条件判断,会使用input或raw_input来读取用户的输入,这样可以自己输入,程序运行得更有意思。使用input或raw_input都可以读取控制台的输入,但是input和raw_input在处理数字时是有区别的。

  • 纯数字输入

当输入为纯数字时,input返回的是数值类型,如int、float。raw_inpout返回的是字符串类型,string类型。

  • 输入字符串为表达式

input会计算在字符串中的数字表达式,而raw_input不会。如输入 “57 + 3”,input会得到整数60,raw_input会得到字符串“57 + 3”。

测试input:

  #!/usr/bin/python
  # -*- coding: utf-8 -*-
  #
  birth = input('birth: ')
  print type(birth)
  if birth < 2000:
   print('00前')
  else:
   print('00后')

测试raw_input:

  # -*- coding: utf-8 -*-
  #
  birth = raw_input('birth: ')
  print type(birth)
  if birth < 2000:
      print('00前')
  else:
      print('00后')

这里可以把输入使用int()函数转换一下,这是因为input()返回的数据类型是strstr不能直接和整数比较,必须先把str转换成整数就可以了。

二、while语法

Python编程中while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:

  while <expression>:
      statement
  else:
      statement

在while循环中,执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假false时,循环结束。如果条件判断语句永远为true,循环将会无限的执行下去。

while语句时还有另外两个重要的命令continue,break来跳过循环。continue用于跳过该次循环,break则是用于退出循环,此外”判断条件”还可以是个常值,表示循环必定成立,具体用法如下:

在python中,while … else在循环条件为false时执行else语句块,其中else块可用可不用。如果用了,只有当循环正常终止,else才会执行;如果循环终止是由break跳出导致的则else不会执行。

三、for语法

Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。for循环的语法格式如下:

  for <i> in <Object>:
      statement
  else:
      statement

一个通用的序列迭代器,用于遍历任何有序的序列对象内的元素。Object可用于字符串、元祖、列表和其它的内置可迭代对象以及通过类所创建的新对象。

跟while … else一样,在循环条件为false时执行else语句块,其中else块可用可不用。如果用了,只有当循环正常终止,else才会执行;如果循环终止是由break跳出导致的则else不会执行。

四、循环控制语句

4.1、break

通常情况下的循环要么执行出错,要么死循环,要么就只能老老实实等它把所有的元素循环一遍才能退出。如果想在循环过程中退出循环,怎么办?用break语句!

break只能用于循环体内。其效果是直接结束并退出当前循环,剩下的未循环的工作全部被忽略和取消。注意当前两个字,Python的break只能退出一层循环,对于多层嵌套循环,不能全部退出。

  var = 10
  while var > 0:              
     print ('当期变量值为 :', var)
     var -= 1
     if var == 5:
        break

4.2、continue

与break不同,continue语句用于跳过当前循环的剩余部分代码,直接开始下一轮循环。它不会退出和终止循环,只是提前结束当前轮次的循环。同样的,continue语句只能用在循环内。

  var = 10
  while var > 0:              
     var -= 1
     if var == 5:             # 变量为 5 时跳过输出
        continue
     print ('当前变量值 :', var)

4.3、pass

空语句是为了保持程序结构的完整性,有些逻辑中可能并不需要执行什么动作,但是如果什么都不写,程序会报错。这个时候就可以使用pass语句了。

这通常用于创建最小结构的类:

  class MyEmptyClass:
      pass

 

猜你喜欢

转载自www.cnblogs.com/zhang789/p/9163135.html