Python程序流程控制结构
一、程序的组织结构
1.三种基本结构
1996年,计算机科学家证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成
2.程序流程图
程序流程图是一种表达程序控制结构的方式,主要用于关键部分的程序分析和过程描述,由一系列图形、流程线和文字说明等组成。
二、顺序结构
程序按照线性顺序依次执行的一种运行方式。
例:把大象装冰箱分几步:
# 把大象装冰箱分几步
print('--------程序开始--------')
print('1.把冰箱门打开')
print('2.把大象装进冰箱')
print('3.关上冰箱门')
print('--------程序结束--------')
二、选择结构(分支结构)
程序根据判断条件的布尔值选择性地执行部分代码明确的让计算机知道在什么条件下,该去做什么。
1.单分支 if
中文语义:如果......就......
语法结构:
if 条件表达式:
条件执行体
if
条件语句:判断一次,条件为True
时执行一次
# if条件语句 判断一次 条件为True时执行一次
money = 100
s = int(input('请输入取款金额:'))
if s <= 100:
money = money - s
print('取款成功,余额为', money)
2.双分支 if...else
中文语义:如果......不满足......就......
语法结构:
if 条件表达式:
条件执行体
else:
条件执行体2
双分支结构if...else
,二选一执行
'''双分支结构if...else,二选一执行'''
# 从键盘输入一个整数,编写程序让计算机判断是奇数还是偶数
num = int(input('请输入一个整数:'))
if num % 2 == 0:
print(num, '是偶数')
else:
print(num, '是奇数')
3.多分支 if...elif..else
中文语义:如果......就......如果......不满足......就......
语法结构:
if 条件表达式:
条件执行体
elif 条件表达式:
条件执行体
elif 条件表达式:
条件执行体
elif 条件表达式:
条件执行体
else:
条件执行体
例:
从键盘录入一个整数成绩:
90-100 : A
80-89 : B
70-79 : C
60-69 : D
0-59 :E
小于0或大于100 不及格
代码:
num = int(input('从键盘输入一个成绩:'))
if 90 <= num <= 100:
print('A')
elif 80 <= num <= 89:
print('B')
elif 70 <= num <= 79:
print('C')
elif 60 <= num <= 69:
print('D')
elif 0 <= num <= 59:
print('E')
else:
print('不及格')
4. 嵌套if
的使用
语法结构
:
if 条件表达式1:
if 内层条件表达式:
内层执行体1
else:
内层执行体2
else:
条件执行体
例:商场消费
会员:
>=200 8折
>=100 9折
<100 不打折
非会员:
>=200 9.5折
<100 不打折
代码:
answer = input('您是会员吗?y/n')
money = float(input('请输入您的购物金额:'))
# 外层判断是否是会员
if answer == 'y': # 会员
if money >= 200:
print('打8折,付款金额为:', money*0.8)
elif money >= 100:
print('打9折,付款金额为:', money*0.9)
else:
print('不打折,付款金额为:', money)
else: # 非会员
if money >= 200:
print('打9.5折,付款金额为:', money*0.95)
else:
print('不打折,付款金额为:', money)
5.三元表达式
语法结构:x if 判断条件 else y
运算规则:如果判断条件的布尔值为True
,条件表达式的返回值为x
,否则条件表达式的返回值为False
# 条件表达式 x if 判断条件 else y
a = int(input('请输入第一个整数:'))
b = int(input('请输入第二个整数:'))
'''if a >= b:
print(a, '>=', b)
else:
print(a, '<', b)'''
# 条件表达式
print(str(a) + '小于' + str(b)) if a < b else (str(a) + '大于' + str(b))
6.pass语句
pass
语句什么都不做,只是一个占位符,用在语法上需要语句的地方
def fun(a, b):
pass
什么时候使用pass
语句:先搭建语法结构,还没想好代码怎么写的时候 。
pas
s语句与哪些语句一起使用:
if
语句的条件执行体for-in
语句的循环体- 定义函数
def
时的函数体
a = 1
b = 2
if a < b:
pass
for i in range(10):
pass
def fun(a, b):
pass
三、循环结构
反复做同一件事情的情况,称为循环,Python
语言的循环结构包括两种:遍历循环和无限循环。遍历循环使用保留字forin
依次提取遍历结构各元素进行处理;无限循环使用保留字while
根据判断条件执行程序
1.range()函数的使用
range()
:用于生成一个整数序列
创建range
对象的三种方式
代码:
# 第一种创建方式 range(stop)
range(10)
print(range(10)) # range(0,10) 返回值是一个迭代器对象 默认从0开始,默认步长为1
print(list(range(10))) # 用于查看range对象中的整数序列 list-->列表
# 第二种创建方式 range(start, stop)
print(range(0, 10))
# 第三种创建方式 range(start,stop,step)
print(range(0, 10, 1))
range()
函数的返回值是一个迭代器对象
range
类型的优点 :不管range
对象表示的整数序列有多长,所有range
对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有当用到range
对象时,才会去计算序列中的相关元素
'''内置函数 range(start(开始)未指定从0开始, stop(结束), step(步长)未指定步长为1)'''
r = range(1, 10, 2)
print(r)
print(list(r)) # 列表 [1, 3, 5, 7, 9]
print(tuple(r)) # 元组 (1, 3, 5, 7, 9)
print(set(r)) # 字典 {1, 3, 5, 7, 9}
in
与not in
判断整数序列中是否存在(不存在)指定的整数
'''判断指定整数在序列中是否存在 in, not in'''
print(3 in r) # True
print(4 in r) # False
print(3 not in r) # False
print(4 not in r) # True
for value in range(10):
print(value, end=' ')
2.遍历循环for-in
for-in
循环
in
表达从(字符串、序列等)中依次取值,又称为遍历for-in
遍历的对象必须是可迭代对象
for-in
的语法结构
for 自定义的变量 in 可迭代对象:
循环体
for-in
的执行图
# for in循环
# in 表达是依次 从 (字符串,序列等) 中依次取值,又称遍历
# for in遍历对象必须是可迭代对象
'''for in 语法结构'''
# for 自定义变量 in 可迭代对象:
# 循环体
for i in 'hello':
print(i, end=' ')
print('')
for i in range(10):
print(i, end=' ')
print('')
# 在循环体中如果不需要使用到自定义变量,可将自定义变量写为下划线('_')
for _ in range(3): # 3表示次数
print('hello')
使用for
循环 计算1-100之间的偶数和
# 使用for循环 计算1-100之间的偶数和
sum = 0
for item in range(101):
if item % 2 == 0:
sum += item
print('1-100之间的偶数和为:', sum)
输出100-999之间的水仙花数
'''输出100-999之间的水仙花数 这个数的个位上的三次方 + 十位上的三次方 + 百位上的三次方 = 这个数'''
for item in range(100, 1000):
ge = item % 10
shi = item % 100 // 10 # item//10%10
bai = item // 100
if item == ge**3+shi**3+bai**3:
print(item)
3.无限循环while
语法结构
:
while 条件表达式:
条件执行体(循环体)
四步循环法:
- 初始化变量
- 条件判断
- 条件执行体(循环体)
- 改变变量
- 打印输出
计算0-4之间的累加和
a = 0 # 1.初始化变量
s = 0
while a <= 4: # 2.条件判断
s += a # 3.条件执行体
a += 1 # 4.改变变量
print(s) # 5.打印输出
选择结构的if
与循环结构while
的区别
If
是判断一次,条件为True
执行一行while
是判断N+1
次,条件为True
执行N
次
4.循环控制break和continue
循环结构有两个辅助循环控制的保留字:break
与continue
。
4.1break
break
用来跳出最内层for
或while
循环,脱离该循环后程序继续执行循环后续代码,通常与 分支结构 if
一起使用。
例:从键盘录入密码,最多录入三次,如果正确就结束循环
# for 循环
for _ in range(3): # range()函数可以用作for循环的循环次数 3 表示for执行了3次
pwd = '888'
a = input('请输入密码:')
if a == pwd:
print('密码正确')
break
else:
print('密码错误,请重新输入密码')
# while 循环,四步循环法
a = 0
while a < 3:
'''条件执行体(循环体)'''
b = '888'
pwd = input('请输入密码:')
if pwd == b:
print('密码正确')
break
else:
print('密码错误')
a += 1
4.2continue
continue
语句用来结束当次循环,即跳出循环体中下面尚未执行的语句,但不跳出当前循环,进入下一次循环,通常与分支结构 if
一起使用
例:要求输出1-50-之间所有5的倍数
# for 循环
for i in range(1, 51):
if i % 5 == 0:
print(i)
# while 循环
a = 1
while a <= 50:
if a % 5 == 0:
print(a)
a += 1
# continue 语句
for item in range(1, 51):
if item % 5 != 0:
continue
print(item)
5.嵌套循环
循环结构中又嵌套了另外的完整的循环结构,其中内层循环做为外层循环的循环体执行。
例1:打印一个三行四列矩形
for _ in range(3):
for _ in range(4):
print('-', end='\t')
print()
例2:输出乘法口诀表
for i in range(1, 10):
for j in range(1, i+1):
print(i, 'x', j, '=', i*j, end='\t')
print()