文章目录
- 概述
- 顺序结构
- 选择结构
- 单分支结构
- 二分支结构
- 多分支结构
- 条件运算
- 选择结构嵌套
- 循环结构
- while 语句
- while 语句基本用法
- while 语句块中的 input() 函数
- for 语句
- for语句基本用法
- for 语句中的 range() 函数
- break、continue 和 pass 语句
- 循环结构的嵌套
概述
按照设计方法的不同,计算机程序设计可分为面向对象程序设计和面向过程程序设计。无论是用哪种设计方法实现的计算机程序,在其各个局部代码中,程序仍然按照结构化的编程步骤执行。
结构化的程序设计思想:将程序划分为不同的结构,这些结构决定程序执行的顺序,结构化程序有三种基本结构:顺序结构、选择结构和循环结构。
- 顺序结构:程序由上到下依次执行每条语句。
- 选择结构:程序判断某个条件是否成立,以决定执行哪部分代码。
- 循环结构:程序判断某个条件是否成立,以决定是否重复执行某部分代码。
顺序结构
顺序结构程序中,依次执行程序代码。流程图见下图:
a = 5
b = 6
c = a + b
print("c = ", c) # c = 11
选择结构
选择结构根据某个条件决定执行不同部分的语句块。
单分支结构
单分支结构可用 if 语句实现。
'''
其一般格式如下:
if 表达式:(表达式结果为:真,执行语句块;否,执行后续代码)
语句块(表达式结果为真所执行的语句)
后续代码...
'''
流程图如下:
# 判断从键盘输入整数的奇偶性并输出结果
n = int(input("请输入一个整数: "))
flag = str(n) + " 是偶数!"
if n % 2 != 0:
flag = str(n) + " 是奇数!"
print(flag)
请输入一个整数: 435
435 是奇数!
二分支结构
'''
一般形式:
if 表达式: 表达式真值:为真,执行语句块1;为假,执行语句块2
语句块1
else:
语句块2
'''
流程图如下:
# 求两个数中较大的数并输出
a = 5
b = 6
if a > b:
max = a
else:
max = b
print("max = ", max)
# max = 6
多分支结构
'''
测试条件顺序为表达式1,表达式2...
一般形式:
if 表达式1: 出现 一次
语句块1
elif 表达式2: 出现多次
语句块2
else: else 出现一次
语句块 n + 1
'''
流程图如下:
# 使用 if 多分支语句判断键盘输入成绩等级并输出
score = int(input("请输入成绩: "))
if score >= 90: # 90 分以上
print("优秀!")
elif score >= 80: # 80 ~ 90
print("良好!")
else: # 其余成绩
print("不合格!")
请输入成绩: 93
优秀!
条件运算
'''
条件运算相当于一个二分支结构语句的简略形式,一般形式如下:
表达式1 if 表达式 else 表达式2
执行过程:如果 if 后面的表达式真值为 True,则以表达式1 的值为条件运算的结果;否则,以表达式2 的值为条件运算的结果
'''
# 如前面二分支求较大数的例子,可以改写为:
a = 5
b = 6
print("max = ", a if a > b else b) # max = 6
# 判断从键盘上输入学生成绩是否合格
score = int(input("请输入学生成绩: "))
flag = "合格" if score >= 60 else "不合格"
print("等级为: ", flag)
请输入学生成绩: 68
等级为: 合格
选择结构嵌套
当在一个选择结构中需要进一步的条件选择时,可以在 if 语句中再嵌套使用 if 语句,形成选择结构嵌套以实现相应功能。
# 求三个数中最大的数据并输出
a = 3; b = 2; c = 4
if a > b: # 条件为True,只需要比较 a 和 c
if a > c: # 即 a > b 且 a > c
print("最大的数是: ", a)
else: # 即 a > b 且 a <= c
print("最大的数是: ", c)
else: # 条件为False,只需要比较 b 和 c
if b > c: # 即 b >= a 且 b > c
print("最大的数是: ", b)
else: # 即 b >= a 且 b <= c
print("最大的数是: ", c)
最大的数是: 4
循环结构
循环结构依据某一条件反复执行某段程序,即语句块。该语句块被执行的次数称为循环次数。
while 语句
while 语句基本用法
'''
while 语句用于循环执行一段程序,即在满足某种条件的情况下循环执行某段程序,以处理需要重复处理的相同任务。
while 语句一般格式:
while 表达式:
语句块
[else: # python 中的[ ] 中的内容均可以省略
else 字句语句块]
while 语句执行过程:如果表达式的值为 True,则执行 while 后面的语句块;否则,执行 else 字句语句块,结束循环。else 子句为可选。
简单理解执行过程:先执行while 语句,知道表达式为 False,再接着执行else语句,但是如果是因为break而中途跳出了while 语句,则不会执行else语句;使用continue则不会有影响
'''
# 使用 while 语句计算 1~100 的和
n = 100 # 终止值
sum = 0 # 保存结果
i = 1 # 循环变量
while i <= n:
sum = sum + i
i += 1
print("1 到 %d 之和为: %d" % (n, sum)) # 1 到 100 之和为: 5050
# 使用 while-else 语句求 i 的阶乘
mul = 1; i = 1; sum = 0
while i <= 10:
mul = mul * i # 计算阶乘
sum = sum + mul # 计算和
i = i + 1 # 如果在此处语句后再添加一个break,则会发现 else 语句不会执行
else:
print("循环结束! ") # 结束循环提示
print("sum = ", sum)
# 循环结束!
# sum = 4037913
# 简略写法(适用 while 语句的语句块只包含一条语句)
flag = True
while flag: print("Hello world!") # 谨慎使用,会死循环
while 语句块中的 input() 函数
while 语句常常和 input() 函数结合使用,给变量循环输入数据,进行相应的处理。
# 通过键盘动态录入成绩,输入-1 退出录入,并计算录入成绩的总分和平均分
total = 0; ave = 0; count = 0
score = int(input("请输入学生英语成绩: "))
while score != -1: # 输入"-1",结束录入
total = total + score # 计算成绩总分
count = count + 1 # 计算录入成绩的数量
score = int(input("请输入学生英语成绩: "))
ave = total / count # 计算平均分
print("录入学生英语成绩 %d 份,学生英语总成绩 %d,平均成绩 %4.2f." % (count, total, ave))
请输入学生英语成绩: 88
请输入学生英语成绩: 54
请输入学生英语成绩: 76
请输入学生英语成绩: -1
录入学生英语成绩 3 份,学生英语总成绩 218,平均成绩 72.67.
for 语句
for语句基本用法
'''
在 Python 中,for 语句更适合循环访问系列或迭代对象(如字符串、列表、元组、字典等)中的元素
其一般格式为:
for 变量 in 序列或迭代对象:
语句块
[else:
else 字句语句块]
执行过程:当序列或迭代对象中的元素没有遍历完毕时,执行 for 语句中的语句,否则,执行 else 子句中的语句块,结束循环。else 子句可省略
'''
# 使用 for 循环遍历列表中的元素
for letter in 'Python':
print(letter, end=' ')
print()
P y t h o n
# 使用 for-else 语句遍历元组的元素并在结束后给出提示
mathmaticians = ('阿基米德', '牛顿', '高斯', )
print("数学家: ", end=' ')
for sxj in mathmaticians:
print(sxj, end=' ') # 和 while-else 语句相同,若是使用 break 跳出,则不会执行 else 语句
else:
print("\n提示:元组遍历完成!")
数学家: 阿基米德 牛顿 高斯
提示:元组遍历完成!
for 语句中的 range() 函数
range() 函数经常用在 for 循环中,用于控制循环次数。
一般形式:[]中为可选项,注意参数顺序不能乱
range(start[, end[, step]])
几种具体形式如下:
range(end) : 省略开头(默认从索引下标为0开始),代表range(start, end) 包含头不包含尾 [start, end),即左开右闭,步长默认为1
range(start, end) : 自定义开头和结尾
range(start, end, step): 规定步长,可以逆向走(step < 0)
for i in range(10): # range(10) 代表 [0, 10)
print(i, end=' ')
0 1 2 3 4 5 6 7 8 9
# 求 1~20 范围内能被 3 整除的所有数
# 方法一:通过设置 range() 函数步长为 3 实现
sum = 0
for i in range(0, 21, 3): # 范围 0~20,不包括21,步长为3
sum = sum + i # 计算和
print('sum = ', sum) # 输出结果
sum = 63
# 方法二:通过判断该数除以3的余数是否为 0 的实现
sum = 0
for i in range(1, 21): # 范围为 1~20,不包括21
if i % 3 == 0: # 能被 3 整除,则余数为 0
sum = sum + i # 计算和
print('sum = ', sum) # 输出结果
sum = 63
break、continue 和 pass 语句
在 Python 中:
- break 语句用于退出循环
- continue 语句用于跳过该次循环
- pass 是空语句(不作任何处理)
通过上述三种语句可以控制循环的执行和保持程序结构的完整性。
# 使用 break 语句跳出循环语句
count = 0 # 计数
while True:
if count < 3:
print("Hello World!")
count = count + 1
else:
break # 跳出循环
# 使用 continue 跳过某次遍历
for i in range(21):
if i % 3 == 0:
continue
else:
print(i, end=' ')
1 2 4 5 7 8 10 11 13 14 16 17 19 20
# 使用 pass 作为占位符,可以在写程序时先使用 pass 作为占位符,写好大概格式后再进行细节描写,这样对于有很多层嵌套语句的场景有很大的帮助
if xx:
pass
if xx:
pass
...
else:
pass
else:
pass
循环结构的嵌套
在一个循环结构的循环体内出现另一个循环结构,称为循环结构的嵌套。
# 打印菱形
for i in range(1, 5):
print(" " * (5 - i), end="") # 打印空格
print("*", end="") # 打印一个*
print("**" * (i - 1), end="") # 打印行数减一个**
print() # 换行
for i in range(1, 4):
print(" " * (i + 1), end="") # 打印空格
print("*", end="") # 打印一个*
print("**" * (3 - i), end="") # 打印**
print() # 换行
*
***
*****
*******
*****
***
*