流程控制
Python中的流程控制主要包括条件语句、循环语句以及异常处理。这些控制结构使得程序能够根据不同的条件执行不同的代码路径,从而提高程序的灵活性和效率。
分支控制
if
语句后面的条件判断表达式使用:
结束。- 可以使用
elif
、else
进行组合判断。 else
后不能加判断条件。if
语句可以嵌套。
if-else
Python 使用if-else
进行控制声明。语法如下:
if boolean-expression:
#statements
else:
#statements
在每一个 if
程序块中,必须使用相同数量的缩进,否则会产生语法错误。这是 Python 和其他语言非常不同的一点。
现在我们看一个例子:
= 11
i if i % 2 == 0:
print("偶数")
else:
print("奇数")
运行结果将根据 i
的值发生变化。
if-elif-else
当需要判断多个条件,可使用if-elif-else
控制声明。
= "monday"
today
if today == "monday":
print("this is monday")
elif today == "tuesday":
print("this is tuesday")
elif today == "wednesday":
print("this is wednesday")
elif today == "thursday":
print("this is thursday")
elif today == "friday":
print("this is friday")
elif today == "saturday":
print("this is saturday")
elif today == "sunday":
print("this is sunday")
else:
print("something else")
我们可以根据实际需求,添加对应的多个 elif 条件。
分支嵌套
我们可以在 if 声明语句块中嵌套使用 if 声明。例如:
= "holiday"
today = 25000
bank_balance if today == "holiday":
if bank_balance > 20000:
print("Go for shopping")
else:
print("Watch TV")
else:
print("normal working day")
三元运算符
if condition else false true
例如:
def b(a):
return a+2 if a > 10 else 5
print(b(11), b(4))
上面的代码将输出13 5
。
循环语句
Python 有两种循环:for
循环和 while
循环。
for循环
for 循环语法
for iterating_var in sequence:
statements
参数 | 描述 |
---|---|
for |
for 循环使用的关键字 |
iterating_var |
for 循环每次迭代使用的变量 |
in |
for 循环使用的关键字 |
sequence |
for 循环需要遍历的变量 |
statements |
每次循环执行的语句 |
- 所有在
for
循环或者while
循环中的声明,必须使用相同的缩进值。否则会出现语法错误。 for
循环可以嵌套使用。
案例1:循环处理序列元素
= [1, 2, 3, 4]
mylist for i in mylist:
print(i)
在第1次循环时,值 1
被传递给 i
,第2次循环时,值 2
被传递给 i
。循环一直到列表变量 mylist
没有更多元素时停止。运行结果为:
1
2
3
4
案例2: 循环处理字典内容
"""在字典中循环时,用 `items()` 方法可同时取出键和对应的值:"""
= {'标题': 'Python一学就会', '作者': '小明'}
books for k, v in books.items():
print(k, v)
out:
标题 Python一学就会 作者 小明
案例3: 循环处理序列的索引和值
"""在序列中循环时,用enumerate()函数可以同时取出位置索引和对应的值:"""
for i, v in enumerate(['tic', 'tac', 'toe']):
print(i, v)
...0 tic
1 tac
2 toe
案例4: 循环处理多个序列
"""同时循环两个或多个序列时,用zip()函数可以将其内的元素一一匹配"""
= ['name', 'quest', 'favorite color']
questions = ['lancelot', 'the holy grail', 'blue']
answers for q, a in zip(questions, answers):
print('What is your {0}? It is {1}.'.format(q, a))
"""结果:
What is your name? It is lancelot.
What is your quest? It is the holy grail.
What is your favorite color? It is blue.
"""
案例5:在一定范围内循环
"""range()函数能够指定循环的起始值和结束值,从而让循环体在指定的范围内循环。例如:"""
for i in range(10):
print(i) # 0-9
for i in range(1,10):
print(i) # 1-9
for i in range(1,10,2):
print(i) # 1,3,5,7
range()
函数只有 1 个参数时,表示从 0 开始循环;两个参数时,第一个参数是起始值,第二个参数是结束值;三个参数时,第三个参数表示循环步长。
while循环
While 循环会一直执行循环体内部的声明,直到条件变成 False
。每次循环都会检查判断条件,如果为真,就继续循环。
while 循环语法
while condition:
do something
例如:
= 0
count
while count < 10:
print(count)
+= 1 count
这段代码将会打印出0-9
,直到 count
等于 10。
中断循环
可以使用break
语句中断循环,还可以使用else
进行判断。
break
使用 break
语句,配合if
语句,可以在满足某个条件的时候中断循环。
= 0
count while count < 10:
+= 1
count if count == 5:
break
print("inside loop", count)
print("out of while loop")
运行结果为:
1
inside loop 2
inside loop 3
inside loop 4
inside loop while loop out of
for break else
for 循环若不是被 break 语句终止执行的,那么 else 的代码会正常执行
for i in range(3):
print('i =', i)
else:
print('Else')
print("Over")
for i in range(3):
if i == 1:
break
print('i =', i)
else:
print('Else')
print("Over")
"""输出:
i = 0
i = 1
i = 2
Else
Over
i = 0
Over
"""
继续循环
当循环体内部出现 continue
声明时,会结束本次循环,跳转到循环体开始位置,开始下一次循环。
= 0
count
while count < 10:
+= 1
count if count % 2 == 0:
continue
print(count)
运行结果将打印出 1,3,5,7,9
。
pass 语句
pass
语句不执行任何操作。语法上需要一个语句,但程序不实际执行任何动作时,可以使用该语句。
while True:
pass # Busy-wait for keyboard interrupt (Ctrl+C)
pass
还可以用作函数或条件子句的占位符,让开发者聚焦更抽象的层次。此时,程序直接忽略 pass
:
def initlog(*args):
pass # Remember to implement this!
流程控制案例
下面是一个使用Python编写的简单的小游戏的代码示例:
import random
print("猜数字游戏")
= random.randint(1, 100)
num = 0
guess = 0
count
while guess != num:
= int(input("请输入1到100之间的整数:"))
guess += 1
count if guess > num:
print("猜大了")
elif guess < num:
print("猜小了")
else:
print("恭喜你,猜对了!")
print("一共猜了%d次" % count)
这个小游戏是一个猜数字游戏,通过调用Python的random库来生成1到100之间的随机数。然后,使用一个while循环不断提示用户输入猜测的数字,直到猜对为止。每次猜测后,根据用户的猜测结果给出提示,告诉用户猜大了还是猜小了,直到猜对为止。当用户猜对后,程序会输出一条恭喜信息,告诉用户一共猜了多少次。