1. 程式人生 > 其它 >Python基礎語法-流程控制

Python基礎語法-流程控制

今天講解Python的流程控制,流程控制也比較簡單,小白不想整的很複雜,以免讓大家看了有一種望“文”生怯的想法。

程式控制結構

通常的程式設計語言有三種控制結構。

順序結構

程式碼從上而下順序執行。

>>> a = 0
>>> a = a + 1
>>> print(a)
1

分支結構

if cond1:
    block1
elif cond2:
    block2

>>> if 1 < 2:
...     print('1 less 2')
...     
... 
1 less 2
>>> print('main block')
main block

分支結構永遠只有一個分支會被執行。

迴圈結構

  1. white語句
  2. for語句

語句結構:

while cond:
    block

一個例子,

>>> a = 0
>>> while a < 10:
...     print(a)
...     a += 1
...     
... 
0
1
2
3
4
5
6
7
8
9

通常在while迴圈中,迴圈體中需要修改條件,以使得條件為假。

迴圈中可以使用break及continue關鍵字,以使迴圈得以停止或繼續下一輪迴圈:

>>> a = 0
>>> while a < 10:
...     if a == 5:
...         break
...     else:
...         print(a)
...         a += 1
...     
... 
0
1
2
3
4

for迴圈,

for element in iterator:
    block

迴圈體中絕對不要修改可迭代物件。如下的程式碼可能會導致機器宕機或重啟,

lst = range(0, 10)

for i in lst:
    lst.append(i)

結構可以巢狀的,

>>> for i in range(0, 10):
...     if i % 2 == 0:
...         print(i)
...         
...     
... 
0
2
4
6
8

break用於提前結束迴圈。continue用於跳過之後的語句。

break的示例,

>>> for i in range(0, 10):
...     print(i)
...     if i > 3:
...         break
...         
...     
... 
0
1
2
3
4

continue的示例,

>>> for i in range(0, 10):
...     if i == 3:
...         continue
...     print(i)
...     
... 
0
1
2
4
5
6
7
8
9

示例

求素數,

a = 7
for i in range(2, a):
    if a % i == 0:
        break
else:
    print('yes')

迴圈結構中else子句判斷迴圈有沒有提前退出,如果提前退出了,else子句不執行,如果沒有提前退出,執行else。

多重迴圈,

is_break = False
for i in range(0, 10):
    for x in range(0, 10):
        if x >= 3:
            is_break = True
            break
        print('x = {0}'.format(x))
    if is_break:
        break

x = 0
x = 1
x = 2

一段小程式碼,

NUM = 35

for _ in range(0, 3): # 這裡的下劃線表示,不需要使用到該變數
    user_input = int(input('pls input a number: '))
    if user_input == NUM:
        print('you win')
        break
    elif user_input < NUM:
        print('less')
    else:
        print('big')
else:
    print('you lose')

列印楊輝三角,

import math

for n in range(0, 10):
    if n == 0:
        print(1)
    else:
        for m in range(0, n+1):
            num = math.factorial(n) // (math.factorial(m) * math.factorial(n-m))
            print(num, end=' ')
        print()

1
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1 
1 7 21 35 35 21 7 1 
1 8 28 56 70 56 28 8 1 
1 9 36 84 126 126 84 36 9 1

列印2到100的素數,

for n in range(2, 101):
    for x in range(2, n):
        if n % x == 0:
            break
    else:
        print(n)

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47
53
59
61
67
71
73
79
83
89
97

今日回顧

今天主要講解了三種程式流程控制:

  • 順序結構
  • 分支結構
  • 迴圈結構

總體來說,三種流程控制結構不是很難,稍加練習,結合前面所學的知識點,就可以寫出一般的Python程式了。