程序控制结构

通常的程序设计语言有三种控制结构。

顺序结构

代码从上而下顺序执行。

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

分支结构

if cond1:
    block1
elif cond2:
    block2

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

分支结构永远只有一个分支会被执行。

循环结构

  1. white语句
  2. for语句

语句结构:

while cond:
    block

一个例子,

a = 0

while a < 10:
    print(a)
    a += 1

通常在while循环中,循环体中需要修改条件,以使得条件为假。

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)

break用于提前结束循环。continue用于跳过之后的语句。

break的示例,

for i in range(0, 10):
    print(i)
    if i > 3:
        break

continue的示例,

for i in range(0, 10):
    if i == 3:
        continue
    print(i)

示例

求素数,

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