分支结构与循环结构

程序的执行流程分为三种结构:顺序结构(一条一条语句顺序执行)、分支结构(根据条件判断的真假去执行不同分支对应的子代码)、循环结构(控制某条或某些指令重复执行)。

分支结构

要构造分支结构可以使用ifelifelse关键字。如:

age = 23
if age > 18:
    print('adult')
else:
    print('child')

与其他语言不同,Python中没有使用花括号来构造代码块是使用了缩进的方式来表示代码的层次结构,如果if条件成立的情况下需要执行多条语句,只要保持多条语句具有相同的缩进就可以了。换句话说连续的代码如果又保持了相同的缩进那么它们属于同一个代码块,相当于是一个执行的整体。缩进可以使用任意数量的空格,但通常使用4个空格。

一个简单的例子:

x = float(input("x = "))
if x > 1:
    y = 3 * x - 5
elif x >= -1:
    y = x + 2
else:
    y = 5 * x + 3
print("f({}) = {}",format(x,y))

循环结构

构造循环结构有两种方法,一种是for循环,一种是while循环。

for循环

如果明确的知道循环执行的次数或者要对一个可迭代对象进行迭代,那么我们推荐使用for循环。如下面我们计算1~100的求和:

sum= 0
for i in range(1,101):
    sum +=1
print(sum)

需要说明的是上面代码中的range(1, 101)可以用来构造一个从1到100的范围,当我们把这样一个范围放到for循环中,就可以通过前面的循环变量x依次取出从1到100的整数。当然,range的用法非常灵活,下面给出了一个例子:

# 用来产生0到100范围的整数,但取不到101
range(101)
# 来产生1到100范围的整数,同样取不到101
range(1,101)
# 用来产生1到100的奇数,其中2是步长,即每次数值递增的值
range(1,101,2)
# 用来产生100到1的偶数,其中-2是步长,即每次数字递减的值。
range(100,0,-2)

知道了这一点,我们可以用下面的代码来实现1~100之间的偶数求和:

sum = 0
for i in range(2,101,2):
    sum += i
print(sum)

while循环

如果要构造不知道具体循环次数的循环结构,我们推荐使用while循环。while循环通过一个能够产生或转换出bool值的表达式来控制循环,表达式的值为True则继续循环;表达式的值为False则结束循环。

下面我们通过一个“猜数字”的小游戏来看看如何使用while循环。猜数字游戏的规则是:计算机出一个1到100之间的随机数,玩家输入自己猜的数字,计算机给出对应的提示信息(大一点、小一点或猜对了),如果玩家猜中了数字,计算机提示用户一共猜了多少次,游戏结束,否则游戏继续。

import random

answer = random.randint(1,100)
count = 0

while True:
    count += 1
    number = int(input("请输入:"))
    if number < answer:
        print("猜小了!")
    elif number > answer:
        print("猜大了!")
    else:
        print("猜对了,牛皮!答案就是{}".format(answer))
        break
print("你总共猜了{}次".format(count)) if count >7: print("你有够垃圾的,要猜那么多次")

上面的代码使用了break关键字来提前终止循环,还有一个关键字continue也可以来终止循环。下面来讲讲break和continue语句以及循环中的else子句。

break和continue语句及循环中的else子句

break执行流程图:

 continue执行流程图:

break语句可以跳出for和while的循环体。如果你从for或while循环中终止,任何对应的循环else块将不执行。

continue语句被用来跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

举两个栗子。

for中使用break:

for i in range(1,10):
    if i == 4:break
    print(i)

输出结果为:

1
2
3

for中使用continue:

for i in range(1,10):
    if i == 4:
        continue
    print(i)

输出结果为:

1
2
3
5
6
7
8
9

循环语句可以有else 子句,它在for循环完毕或while循环条件变为false导致循环终止时被执行,但循环被 break 终止时不执行。

举两个栗子。

while/else中使用break:

i = 0
while True:
    i += 1
    if i == 4:
        break
    print(i)
else:
    print("结束时被打印")

输出结果为:

1
2
3

while/else中使用continue:

i = 0
status = True
while status:
    i += 1
    if i == 4:
        continue
    print(i)
    if i == 10:
        status = False
else:
    print("结束时被打印")

输出结果为:

1
2
3
5
6
7
8
9
10
结束时被打印

pass语句

pass是空语句,是为了保持程序结构的完整性。pass 不做任何事情,一般用做占位语句。

举两个栗子。

i = 0
status = True
while status:
    i += 1
    if i == 6:
        pass
        print("这是pass")
    print(i)
    if i == 10:
        status = False

输出结果为:

1
2
3
4
5
这是pass
6
7
8
9
10

 

for i in range(1,11):
    if i == 6:
        pass
        print("这是pass")
    print(i)

输出结果为:

1
2
3
4
5
这是pass
6
7
8
9
10

posted on 2020-04-28 16:48  MidSummer丶  阅读(949)  评论(0)    收藏  举报

导航