python 3.x 流程控制语句

条件控制语句

  • if expression:
            pass
  • if condition:
            pass
    else:
            pass
  • if expression:
            pass
    elif expression:
            pass
    elif expression:
            pass
    else:
            pass

由于python中没有switch和case语句,官方建议使用if..elif...elif...elif...else...语句来完成

对于需要从大量可能性中进行选择的情况,您可以创建一个字典映射案例值给要调用的函数(官方)。例如:

 1 def function_1(...):
 2     ...
 3 
 4 def function_2(...):
 5     ...
 6 
 7 
 8 functions = {'a': function_1,
 9              'b': function_2,
10              'c': self.method_1, ...}
11 
12 func = functions[value]
13 
14 func()

 

if...else...语句有时可以使用逻辑运算符or来取代.

1 # 需求: 使用快速的方法来判断a,b的bool类型.a,b一真一假
2 a = 1
3 b = 0
4 # 输出结果: 1
5 # 通过输出的结果来判断a,b的bool类型.因为逻辑运算符or的原理是一真则真.当第一个表达式为真时,就不会在判断第二个表达式.提高效率的判断
6 print(a or b)

 

 

 循环控制语句

  • while
    •   
      while expression:
              pass
      while expression:  
              pass
      else:
              pass
       1 a = 10
       2 i = 1
       3 j = 1
       4 
       5 if i==0:
       6     print("i是1,停止操作")
       7     exit(0)  # 无错误退出程序,后面的代码不执行
       8 
       9 while i <= 10:
      10     print("jayden",i)
      11     i += 1
      12 
      13 
      14 while j <= 3:
      15     print("june",j)
      16     j += 1
      17 else:
      18     print("j大于4")
      19 
      20 打印结果:
      21 jayden 1
      22 jayden 2
      23 jayden 3
      24 jayden 4
      25 jayden 5
      26 jayden 6
      27 jayden 7
      28 jayden 8
      29 jayden 9
      30 jayden 10
      31 june 1
      32 june 2
      33 june 3
      34 j大于4
  • for
  1. 主要用来遍历/循环.序列或者集合.字典
    •  
      for target_list in expression_list:
              pass

      for target_list in expression_list:
        pass
      else:
              pass 
 1 list_a = [["python","java","php","jayden","june"],(1,2,3)]
 2 list_b = ["python","java","php","jayden","june"]
 3 
 4 for item_b in list_b:
 5     print(item_b,end = " ")
 6 
 7 print()
 8 
 9 for item_a in list_a:
10     for item_c in item_a:
11         print(item_c)
12 else:
13     print("循环结束")
14 
15 输出结果:
16 python java php jayden june
17 python
18 java
19 php
20 jayden
21 june
22 1
23 2
24 3
25 循环结束

 

         2. 当for循环碰见break时,跳出循环,并终止循环语句,else语句也不会执行

 1 list_b = ["python","java","php","jayden","june"]
 2 
 3 for item_b in list_b:
 4     if item_b == "jayden":
 5         break
 6     print(item_b)
 7 else:
 8     print("end !")
 9 
10 输出结果:
11 python
12 java
13 php

 

       3.当for循环碰见continue时,跳出当前循环,立即执行下一循环,else语句正常执行

 1 list_b = ["python","java","php","jayden","june"]
 2 
 3 for item_b in list_b:
 4     if item_b == "jayden":
 5         continue
 6     print(item_b)
 7 else:
 8     print("end !")
 9 
10 输出结果:
11 python
12 java
13 php
14 june
15 end !

 

   4.当for循环嵌套for循环时,在子for循环内有一个if判断语句执行break时,当前子for循环立即终止.执行下一个父for循环.如果有else语句,并执行.
            
 1 for item_a in list_a:
 2     for item_c in item_a:
 3         if item_c == "jayden":
 4             break
 5         print(item_c)
 6 else:
 7     print("循环结束")
 8 
 9 输出结果:
10 python
11 java
12 php
13 1
14 2
15 3
16 循环结束

 

python中for循环没有类似于java中for( i = 0 ; i < 10 ; i++ ){ }的形式 ,如果您确实需要对数字序列进行迭代,那么内置的函数range()将派上用场。它生成等差数列. 

  • range( stop_value ) : 默认起始值是0 , 结束值为stop_value(不包含) , 默认步长(step)是1
  • range( start_value , stop_value ) : 起始值(start_value)可以自定义,结束值为stop_value(不包含),默认步长(step)是1.
  • range( start_value , stop_value , step ) : 起始值(start_value)可以自定义,结束值为stop_value(不包含),自定义步长(step)
 1 for int_x in range(10):
 2     print(int_x,end = " ")
 3 
 4 print()
 5 
 6 for int_x in range(2 , 10):
 7     print(int_x,end = " ")
 8 
 9 print()
10 
11 for int_x in range(3 , 15 , 3):
12     print(int_x,end = " ")
13 
14 print()
15 
16 输出结果:
17 
18 0 1 2 3 4 5 6 7 8 9
19 
20 2 3 4 5 6 7 8 9
21 
22 3 6 9 12
  •  range()递减
 
 1 for int_x in range(10 , 0 , -1):
 2     print(int_x,end = " ")
 3 
 4 print()
 5 
 6 for int_x in range(10 , 0 , -2):
 7     print(int_x,end = " ")
 8 
 9 print()
10 
11 for int_x in range(-10 , 1 , 2):
12     print(int_x,end = " ")
13 
14 print()
15 
16 输出结果:
17 10 9 8 7 6 5 4 3 2 1
18 
19 10 8 6 4 2
20 
21 -10 -8 -6 -4 -2 0

 

 要遍历序列的指数,你可以结合range()len()如下:(但是,在大多数情况下,使用该enumerate() 功能很方便)

 1 list_a = ["jayden","june","java","python","eleven"]
 2 
 3 for index in range(len(list_a)):
 4     print(index,list_a[index])
 5 
 6 输出结果:
 7 0 jayden
 8 1 june
 9 2 java
10 3 python
11 4 eleven

 

但是,在大多数情况下,使用该enumerate() 功能很方便

  •  enumerate(iterable , start = 0)
  •  返回一个枚举对象。iterable必须是一个序列,一个 迭代器或其他支持迭代的对象。__next__()通过enumerate()返回的迭代器的方法 返回一个包含count的元组(从start开始,默认值为0)以及从iterable迭代获得的值。
1 # enumerate(iterable,start = 0)
2 print(list(enumerate(list_a)))
3 
4 print(list(enumerate(list_a,start = 1)))
5 
6 输出结果:
7 [(0, 'jayden'), (1, 'june'), (2, 'java'), (3, 'python'), (4, 'eleven')]
8 
9 [(1, 'jayden'), (2, 'june'), (3, 'java'), (4, 'python'), (5, 'eleven')]

 

 1 list_a = [1,2,3,4,5,6,7]
 2 
 3 for x in range(0,len(list_a),2):
 4     print(list_a[x])
 5 
 6 print(list_a[0::2])
 7 
 8 输出结果:
 9 1
10 3
11 5
12 7
13 [1, 3, 5, 7]

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

posted on 2018-06-16 10:14  jaydenjune  阅读(60)  评论(0)    收藏  举报

导航