Python入门(五):程序控制结构
文章目录
程序控制结构
顺序结构
顺序结构只要按照解决问题的顺序写出相应的语句即可,是最简单也是最常用的程序结构,执行顺序是自上向下,依次执行。
分支结构
计算机之所以可以做许多自动化的任务,一个重要的原因在于它可以通过特定语法自行判断。分支结构其实就是根据判断条件结果而选择不同向前路径的运行方式。
条件判断操作符
单分支结构
使用方式如下:
if <条件>:
<语句块>
word = input()
if word == "一心一懿":
print("无问西东")
二分支结构:if-else语句
使用方式如下:
if <条件>:
<语句块1>
else:
<语句块2>
例:小明的成绩为75分,60分为及格线,请判断小明是否及格
grade = 75
if grade >= 60:
print("及格")
else:
print("不及格")
注:Python代码中具有相同缩进的代码被视为代码块,请严格遵循缩进规则:4个空格,尽量不要使用Tab。(虽然我一直用的是Tab。。。,但建议还是要有的)
多分支结构:if-elif-else 语句
使用方式如下:
if <条件1>:
<语句块1>
elif <条件2>:
<语句块2>
...
else:
<语句块n>
例:小华的成绩为75分,学校规定90分及以上为A,75分及以上为B,60分及以上为C,60分以下为D,请判断小华的成绩等级。
grade = 75
if grade >= 90:
print("A")
elif grade >= 75:
print("B")
elif grade >= 60:
print("C")
else:
print("D")
循环结构
计算机在具有重复性规律的事物上的工作效率极高,其原因在于它可以以极快的速度遍历并且循环该事物。
遍历循环
在 Python 中,我们可以通过 for 循环进行元素遍历,这种遍历称为迭代。
使用方式如下:
for <循环变量> in <遍历结构>:
<语句块>
普通迭代
例:请用for循环迭代数列 1-100 并打印出7的倍数。
for i in range(1,101):
if i % 7 == 0:
print (i,end=",") #end=","表示结果以行表示,每个元素用逗号隔开
字符串迭代
for i in "April":
print("Hello:",i) #可以试着比较下与 print("Hello:"+i) 的差异
列表迭代
for word in ["一身诗意千寻瀑","万古人间四月天"]:
print(word)
索引迭代
在 Python 中,迭代永远是取出元素本身,而非元素的索引。
然而对于有序集合,如列表,元组等,元素是有索引的,因此我们通过 enumerate函数来遍历索引和元素本身。
enumerate函数会把['A','B','C']
变成 [(0,'A'),(1,'B'),(2,'C')]
,因此迭代的每一个元素实际上为一个元组。
例:在迭代 [‘A’, ‘B’, ‘C’, ‘D’] 时,利用迭代语句打印出顺序 - 字母(顺序从1开始)。
L = ['A', 'B', 'C', 'D']
for index, name in enumerate(L):
print (index+1, '-', name)
字典迭代
我们知道 dict 是可迭代对象,但是用 for 循环直接迭代只能拿到其 key 值,
如果我们要拿到 value 值 ,就需要借助 dict 中的 values 方法。
该方法是将 dict 转换成一个包含所有 value 的列表。
例:给定一个学习小组成员的编号及其成绩:
d = { ‘A’: 96, ‘B’: 81, ‘C’: 60, ‘D’: 59 }
请计算该组成员的平均分。
d = { 'A': 96, 'B': 81, 'C': 60, 'D': 59 }
sum = 0.0
for v in d.values():
sum += v
mean = sum/len(d)
print(mean)
那么如何同时迭代 key和value 呢?方法是借助于 dict 中的 items 方法。
例:给定一个学习小组成员的编号及其成绩:
d = { ‘A’: 96, ‘B’: 81, ‘C’: 60, ‘D’: 59 }
请打印该组每一名成员的成绩计算该组成员的平均分。(用 平均分:分数 格式来表示)
d = { 'A': 96, 'B': 81, 'C': 60, 'D': 59 }
sum = 0.0
for k,v in d.items():
sum += v
mean = sum/len(d)
print(k,':',v)
print("平均分:",mean)
多重迭代
在循环内部还可以嵌套循环。
例:对100以内的两位数,请使用两重循环输出所有十位数数字比个位数数字小的数。
for x in [1,2,3,4,5,6,7,8 ]:
for y in [ 2,3,4,5,6,7,8,9 ]:
if x < y:
print(10*x+y)
无限循环
无限循环指的是由条件控制的循环运行方式,程序会反复执行语句块,直到条件不满足时结束。 while 循环根据表达式判断循环是否结束 。 使用方式如下:
while <条件>:
<语句块1>
else:
<语句块2>
例:计算911以内奇数的和
sum = 0
x = 1
while x <= 911:
sum += x
x += 2
print(sum)
循环控制保留字
break跳出并结束当前整个循环,执行循环后的语句。
注:break仅跳出当前最内层循环
for c in "April":
if c=="r":
break
print(c,end="")
s = "Python"
while s != "":
for c in s:
print(c,end="")
s = s[:-1]
s = "Python"
#比较上下两个程序运行结果的差异,说明break语句的作用
while s != "":
for c in s:
if c=="t":
break
print(c,end="")
s = s[:-1]
continue结束当次循环,继续执行后续次数循环。
for c in "April":
if c==r:
continue
print(c,end="")
循环扩展
注:当循环没有被break语句退出时,执行else语句块,即else语句块是对程序正常运行的额外奖励。