python之分支与循环结构
1 分支结构
Python 的分支结构由 if 语句来实现,if 语句总共有 5 钟语法结构。
(1)第 1 种是判断一个条件,如果这个条件成立,就执行其包含的某条语句或某个代码块。语法结构如下:
if 条件:
某条语句或某个代码块
(2)第 2 种同样是判断一个条件,跟第 1 种的区别是如果条件不成立,则执行另外的某条语句或某个代码块。语法结构如下:
if 条件:
某条语句或某个代码块
else:
某条语句或某个代码块
(3)第 3 种是判断多个条件,如果第 1 个条件不成立,则继续判断第 2 个条件,如果第 2 个条件还不成立,则接着判断第 3 个条件……语法结构如下:
if 第1个条件:
某条语句或某个代码块
elif 第2个条件:
某条语句或某个代码块
elif 第3个条件:
某条语句或某个代码块
(4)第 4 种是在第 3 种的情况下添加一个 else,表示上面所有的条件均不成立的情况下,执行某条语句或某个代码块。语法结构如下:
if 第1个条件:
某条语句或某个代码块
elif 第2个条件:
某条语句或某个代码块
elif 第3个条件:
某条语句或某个代码块
else:
某条语句或某个代码块
(5) if-else条件表达式,相当于将一个完整的 if-else 结构整合成一个表达式来使用。语法结构如下:
条件成立时执行的语句 if 条件 else 条件不成立时执行的语句
它把条件放正中间,然后左右紧挨着关键字 if 和 else,最左侧是条件成立时执行的语句,最右侧是条件不成立时执行的语句。
a = 3
b = 5
small = a if a < b else b
print(small)
==============================
3
score = 66
level = ('D' if 0 <= score < 60 else
'C' if 60 <= score < 80 else
'B' if 80 <= score < 90 else
'A' if 90 <= score < 100 else
'S' if score == 100 else "请输入0~100之间的分数!")
print(level)
==============================
C
2 循环结构
Python 有两种循环语句:while 循环和 for 循环。
1)while 循环
它的语法结构结构如下:
while 条件:
某条语句或某个代码块
只要条件一直成立,那么其包含的某条语句或某个代码块就会一直被执行。
在循环体内,一旦遇到 break
语句,Python 马上就会跳出循环体,即便这时候循环体内还有待执行的语句。
while True:
answer = input("您猜我多少岁了?")
if int(answer) == 25:
break
==============================
您猜我多少岁了?10
您猜我多少岁了?20
您猜我多少岁了?30
您猜我多少岁了?40
您猜我多少岁了?50
您猜我多少岁了?25
>>>
while True:
answer = input("您猜我多少岁了?")
if int(answer) == 25:
break
print("您猜错了!")
print("您猜对了")
==============================
您猜我多少岁了?10
您猜错了!
您猜我多少岁了?20
您猜错了!
您猜我多少岁了?30
您猜错了!
您猜我多少岁了?40
您猜错了!
您猜我多少岁了?50
您猜错了!
您猜我多少岁了?25
您猜对了
>>>
continue
语句也会跳出循环体,但是,它只是跳出本一轮循环,它还会回到循环体的条件判断位置,然后继续下一轮循环(如果条件还满足的话)。
【注意】continue
和 break
语句两者的区别:
∙
\bullet
∙ continue 语句是跳出本次循环,回到循环的开头。
∙
\bullet
∙ break 语句则是直接跳出循环体,继续执行后面的语句。
while循环结构还可以和else一起使用,当循环的条件不再为真的时候,便执行 else 语句的内容。
i = 1
while i < 5:
print("循环内,i 的值是", i)
i += 1
else:
print("循环外,i 的值是", i)
==============================
循环内,i 的值是 1
循环内,i 的值是 2
循环内,i 的值是 3
循环内,i 的值是 4
循环外,i 的值是 5
>>>
while-else 可以非常容易地检测到循环的退出情况。
day = 1
while day <= 7:
answer = input("今天有好好学习吗?")
if answer != "有":
break
day += 1
else:
print("非常棒,你已经坚持了7天连续学习!")
==============================
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
非常棒,你已经坚持了7天连续学习!
>>>
==============================
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?有
今天有好好学习吗?没有
>>>
通过上述结果可以发现,只有连续输入7次“有”,当while的判断条件不再满足时,最后才会执行else里面的语句块;如果使用break跳出while循环,则不再执行else里面的语句块。
2)for 循环
它的语法结构如下:
for 变量 in 可迭代对象:
某条语句或某个代码块
所谓可迭代对象,就是指那些元素能够被单独提取出来的对象。比如字符串,它就是一个可迭代对象。
for each in "HelloWorld":
print(each)
==============================
H
e
l
l
o
W
o
r
l
d
>>>
for n in range(10):
print(n)
==============================
0
1
2
3
4
5
6
7
8
9
>>>
for n in range(5, 10):
print(n)
==============================
5
6
7
8
9
>>>
for n in range(1, 10, 2):
print(n)
==============================
1
3
5
7
9
>>>
for n in range(10, 1, -2):
print(n)
==============================
10
8
6
4
2
>>>
for 循环和 while 循环一样,都是可以支持嵌套的,同样它也可以搭配 break 和 continue 语句。
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, "=", x, "*", n // x)
break
else:
print(n, "是一个素数")
==============================
2 是一个素数
3 是一个素数
4 = 2 * 2
5 是一个素数
6 = 2 * 3
7 是一个素数
8 = 2 * 4
9 = 3 * 3
>>>
【注意】对于while循环和for循环的嵌套,break语句和continue语句都只是跳出当前的循环体,并不会跳出所有的循环体。