第四章,了不起的分支和循环
4.1 分支和循环
Python主要依靠缩进来区分代码块
4.2 快速上手
成绩按照分数来划分等级,90分以上为A,80~90 为B,60~80 为C,60以下为D
p4_1.py
score = int(input(
"
请输入一个分数:
"
))
if
100 >= score >= 90
:
print
(
"
A
"
)
if
90 > score >= 80
:
print
(
"
B
"
)
if
80 > score >= 60
:
print
(
"
C
"
)
if
60 > score >=
0:
print
(
"
D
"
)
if
score < 0
or
score > 100
:
print
(
"
输入错误!
"
)
p4_2.py
score = int(input(
"
请输入您的分数:
"
))
if
100 >= score >= 90
:
print
(
"
A
"
)
else
:
if
90 > score >= 80
:
print
(
"
B
"
)
else
:
if
80 > score >= 60
:
print
(
"
C
"
)
else
:
if
60 > score >=
0:
print
(
"
D
"
)
else
:
print
(
"
输入错误!
"
)
p4_3.py
score = int(input(
"
请输入您的分数:
"
))
if
100 >= score >= 90
:
print
(
"
A
"
)
elif
90 > score >= 80
:
print
(
"
B
"
)
elif
80 > score >= 60
:
print
(
"
C
"
)
elif
60 > score >=
0:
print
(
"
D
"
)
else
:
print
(
"
输入错误!
"
)
分析:
p4_1.py中,假设输入的是98,程序第一次成立,打印A,不过程序还为结束,需要继续对后面的四个条件进行判断,直到所有的条件不符合,最后才退出程序。
虽然简单的例子,但就输入的测试数据来说,假设每一次判断都会消耗一个CPU时间,那么程序p4_1.py 的代码要比其余的程序多耗费400%的CPU资源。
4.3 避免悬挂else问题
使用Python开发没有这方面的考虑
age = 20
score
=
"
A
"
if
age < 18
:
if
score ==
"
A
"
:
print
(
"
恭喜你,获得青少年一等奖!
"
)
else
:
print
(
"
抱歉,本活动只限于小于18周岁的青少年参与。
"
)
4.4 条件表达的三元素
>>> x = 5
>>> y = 4
>>> if x < y:
... small = x
... else:
... small = y
...
>>> small
4
>>>
三元操作符
a = x 条件 else y
表示当条件为true的时候,a被赋值为x,否则被赋值为y
>>> x = 5
>>> y = 4
>>> small = x if x < y else y
>>> small
4
>>>
score = int(input(
"
请您输入一个数字:
"
))
level
=
0
if
100 >= score >= 90
:
level
=
'
A
'
elif
90 > score >= 80
:
level
=
'
B
'
elif
80 > score >= 60
:
level
=
'
C
'
elif
60 > score >=
0:
level
=
'
D
'
else
:
print
(
"
输入错误!
"
)
print
(level)
如果使用三元操作符实现
score = int(input(
"
请您输入一个数字:
"
))
level
=
0
level
=
'
A
'
if
100 >= score >= 90
else
'
B
'
if
90 > score >= 80
else
'
C
'
if
80 > score >= 60
else
'
D
'
if
60 > score >=0
else
print
(
"
输入错误!
"
)
print
(level)
4.5 断言
断言的语法语法其实有点像if条件的分支语句,一般在程序调试的时候,使用
>>> assert 3 < 4
>>> assert 3 > 4
Traceback (most recent call last):
File "
AssertionError
>>>
4.6 while循环语句
语法:
while 条件:
循环体
i = 1
sum
=
0
while
i <= 100
:
sum
+=
i
i
+= 1
print
(sum)
4.7 for 循环语句
语法:
for 变量 in 可迭代对象:
循环体
sum =
0
for
i
in
range(101
):
sum
+=
i;
i
+= 1
print
(sum)
range() 是一个BIF,它可以为指定的整数生成一个数字序列,语法如下:
range(stop)
range(start,stop)
range(start,stop,step)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(5,10))
[5, 6, 7, 8, 9]
>>> list(range(0,10,2))
[0, 2, 4, 6, 8]
>>> list(range(0,-10,-2))
[0, -2, -4, -6, -8]
4.8 break 语句
break语句终止当前循环,跳出循环体
bingo =
"
清蒸
"
answer
= input(
"
小甲鱼是清蒸好吃还是炖了好吃?
"
)
while
True:
if
answer ==
bingo:
break
answer
= input(
"
抱歉,请重新输入。
"
)
print
(
"
对吗,只有清蒸才原汁原味。
"
)
打印2018年之后出现的第一个闰年
(当年月份可以被4整除,且不能被100整除,或者可以被400整除,该年为闰年)
for
year
in
range(2018,2100
):
if
(year % 4 == 0)
and
(year % 100 != 0)
or
(year % 400 ==
0):
break
print
(
"
2018年之后出现的第一个润年是
"
, year)
4.9 continue 语句
跳出本轮循环,进行下一轮循环
如果要打印2018年到2100年之间的年份
for
year
in
range(2018,2050
):
if
(year % 4 == 0)
and
(year % 100 != 0)
or
(year % 400 ==
0):
print
(year)
continue
2020
2024
2028
2032
2036
2040
2044
2048
4.10 else语句
while 条件:
循环体
else:
条件不成立时执行的内容
for 变量 in 可迭代对象:
循环体
else:
条件不成立可执行的内容

