程序的三种组织结构
Python中最常用的三种程序组织结构,分别是:顺序结构、选择结构、循环结构。
一、顺序结构:
自上而下的编写程序。如下所示:
# 把大象装进冰箱中
print('--------程序开始--------')
print('第一步,打开冰箱门')
print('第二步,把大象装进冰箱中')
print('第三步,关闭冰箱门')
print('--------程序结束-------')
二、选择结构
程序根据判断条件的布尔值选择性地执行部分代码,明确的让计算机知道在什么条件下,该做什么。
(1)对象的布尔值
print('--------以下对象的布尔值均为False----------')
print(bool(False))
print(bool(0))
print(bool(0.0))
print(bool(None))
print(bool('')) # ''表示空字符串
print(bool("")) # ""表示空字符串
print(bool([])) # list()表示空列表
print(bool(list())) # list()表示空列表
print(bool(())) # ()表示空元组
print(bool(tuple())) # tuple()表示空元组
print(bool(dict())) # dict()表示空字典
print(bool({})) # {}表示空字典
print(bool(set())) # set()表示空集合
print('-------其他情况的布尔值为True---------')
print(bool(0.1))
print(bool(True))
print(bool([1, 2]))
print(bool(1314))
print(bool('word'))
(2)单分支结构
当满足某一条件时,即判断内容为真时,执行后续语句块
语法结构:
if 条件表达式:
条件执行体
案例:
# 单分支结构
money = 1000
a = int(input('请输入取款金额:'))
if money >= a:
money = money - a
print('取款成功,取款金额为:', money)
运行结果:
(3)双分支结构
满足该条件或者不满足该条件时,各自执行对应的代码块。
语法结构:
if 条件表达式:
条件执行体1
else:
条件执行体2
案例:
# 双分支结构
money = 1000
a = int(input('请输入取款金额:'))
if money >= a:
money = money - a
print('取款成功,取款金额为:', money)
else:
print('对不起,取款金额不足')
运行结果:
(4)多分支结构
语法结构:
if 条件表达式1:
条件执行体1
elif 条件表达式2:
条件执行体2
......
elif 条件表达式N:
条件执行体N
else:
条件执行体N+1
案例:
# 多分支结构
"""
成绩录入案例,判断成绩是否在有效范围内。
范围如下:
90~100 A级
80~89 B级
70~79 C级
60~69 D级
0~59 不及格
不在一百范围内的属于非法数据
以上案例有两种写法
"""
# 写法一
score = int(input('请输入成绩:'))
if score >= 90 and score <= 100:
print('A级')
elif score >= 80 and score <= 89:
print('B级')
elif score >=70 and score <= 79:
print('C级')
elif score >=60 and score <= 69:
print('D级')
elif score >= 0 and score <= 59:
print('不及格')
else:
print('对不起,成绩为非法数据,请输入有效成绩')
# 写法二
score = int(input('请输入成绩:'))
if 90 <= score <= 100:
print('A级')
elif 80 <= score <= 89:
print('B级')
elif 70 <= score <= 79:
print('C级')
elif 60 <= score <= 69:
print('D级')
elif 0 <= score <= 59:
print('不及格')
else:
print('对不起,成绩为非法数据,请输入有效成绩')
运行结果:
结果1:
结果2:
(5)多分支语句之嵌套if的使用
语法结构:
if 条件表达式:
if 内层条件表达式:
内层条件执行体1
else:
内层条件执行体2
else:
条件执行体
案例:
# 多分支语句之嵌套if的使用
"""
案例:商品打折与否的情况
判断是否是会员,是会员打折的折扣情况,不是会员的打折的折扣情况。
最外层嵌套的语句是判断是否为会员
内层判断打折情况
"""
answer = input('您是会员吗?y/n')
money = float(input('请输入付款金额'))
if answer == 'y': # 会员
if money >= 200:
print('您是会员,打八折,您的付款金额为:', money*0.8)
elif 100 <= money < 200:
print('您是会员,打九折,您的付款金额为:', money*0.9)
else :
print('您的付款金额为:')
else:
if money >= 200:
print('您不是会员,您的付款金额为:', money*0.95)
else:
print('您的付款金额为:')
运行结果:
结果1:
结果2:
(6)条件表达式
条件表达式是if......else的简写。
语法结构:
x if 判断条件 else y
运算规则:
如果判断条件的布尔值为True,条件表达式的返回值为x,否则条件表达式的返回值为False
案例:
# 比大小
num_1 = int(input('请输入一个数:'))
num_2 = int(input('请输入一个数:'))
print(str(num_1) + '大于等于'+str(num_2) if num_1 >= num_2 else str(num_1)+'小于'+str(num_2))
运行结果:
(7)pass语句
pass语句什么都不用做,只是一个占位符,用在语法上需要语句的地方。即搭建语法结构,在还没有想好代码怎么写的时候
pass语句的使用:
- if语句的条件执行体
- for-in语句的循环体
- 定义函数时的函数体
三、循环结构
程序判断条件为True时,执行循环体(反复做同一件事情),当判断条件为False时结束
(1)range()函数
- 用于生成一个整数序列
- 返回值是一个迭代器对象
- 使用in或not in判断指定的值是否在范围内
创建range对象的三种方式:
- range(stop),创建一个[0,stop)之间的整数序列步长为1
- range(start,stop),创建一个[start,stop)之间的整数序列,步长为1
- range(start,stop,step),创建一个[start,stop)之间的整数序列,步长为step
案例:
# range的第一中创建方式,是只有一个参数(小括号中只给一个数)
a = range(10) # 如果只是输入一个单纯的参数,那么其显示的就是一个参数范围,未进行说明默认从0开始,默认相差1,称为步长。
print(a)
print(list(a)) # 使用list函数,可以将这个范围内的数据都呈现出来,list是列表的意思。
# range的第二种创建方式,含有两个参数值,相当于是给定了范围,即开始和结束,订单式为开区间
b = range(1, 10) # 给定范围,但依旧默认步长为1
print(b)
print(list(b))
# range的第三种创建方式,给定范围,给定步长
c = range(1, 10, 3)
print(c)
print(list(c))
# 判断指定的整数是否在函数范围中,用in或not in去判断
d = range(1,10)
print(9 in d)
print(9 not in d)
运行结果:
第一种:
第二种:
第三种:
判断指定范围:
range类型的优点:
不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有利用到range对象时,才会去计算序列中的相关元素。
(2)While循环
语法结构:
while 条件表达式:
条件执行体(循环体)
选择结构的if与循环结构while的区别:
- if是判断一次,条件为True执行一行
- while是判断N+1次,条件为True执行N次
练习题:计算0~100中的偶数和,扩展:计算出奇数和
# 偶数求和
sum = 0 # 声明一个变量,以便于后便可以存储数据
b = 1 # 初始化变量
while b <= 100: # 条件判断
# 条件执行体,求和
if not bool(b % 2):
sum += b
# 改变变量
b += 1
print('所求的偶数和为:', sum)
# 奇数求和
sum = 0 # 声明一个变量,以便于后便可以存储数据
d = 1 # 初始化变量
while d <= 100: # 条件判断
# 条件执行体,求和
if d % 2 == 1:
sum += d
# 改变变量
d += 1
print('所求的奇数和为:', sum)
运行结果:
(3)for-in循环
- in表达从(字符串、序列等)中依次取值,又称为遍历
- for-in遍历的对象必须是可迭代对象
语法结构:
for 自定义的变量 in 可迭代对象:
循环体
循环体内不需要访问自定义变量,可以将自定义变量替换为下划线
案例:
# for 自定义变量 in 可迭代对象
for item in 'Python':
print(item)
运行结果:
练习题:利用for-in循环去求水仙花数
for item in range(100, 1000):
ge = item % 10 # 个位
shi = item // 10 % 10 # 十位
bai = item // 100 # 百位
if ge ** 3 + shi ** 3 + bai ** 3 == item:
print(item)
运行结果:
(4)嵌套循环
嵌套循环中又嵌套了另外的完整的循环结构其中内层循环作为外层循环的循环体执行。
练习题1:打印输出一个矩阵
for i in range(1, 5): # 输出的行数
for j in range(1, 6): # 输出的列数
print('*', end = '\t')
print()
运行结果:
练习题2:打印输出三角形(按照九九乘法表的格式)
for i in range(1,10): # 输出行数
for j in range(1, i+1):
print('*', end='\t')
print()
运行结果:
练习题3:打印输出九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(i, '*', j, '=', i*j, end='\t')
print()
运行结果: