Python 程序设计结构


概述

按照设计方法的不同,计算机程序设计可分为面向对象程序设计和面向过程程序设计。无论是用哪种设计方法实现的计算机程序,在其各个局部代码中,程序仍然按照结构化的编程步骤执行。
结构化的程序设计思想:将程序划分为不同的结构,这些结构决定程序执行的顺序,结构化程序有三种基本结构:顺序结构、选择结构和循环结构。

  • 顺序结构:程序由上到下依次执行每条语句。
  • 选择结构:程序判断某个条件是否成立,以决定执行哪部分代码。
  • 循环结构:程序判断某个条件是否成立,以决定是否重复执行某部分代码。

顺序结构

顺序结构程序中,依次执行程序代码。流程图见下图:
在这里插入图片描述

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()  # 换行

    *
   ***
  *****
 *******
  *****
   ***
    *

写在最后:
首先,如果本篇文章有任何错误,烦请读者告知!不胜感激!
其次,本篇文章仅用于日常学习以及学业复习,如需转载等操作请告知作者(我)一声!
最后,本文会持续修改和更新,如果对本分栏的其他知识也感兴趣,可以移步目录导航专栏,查看本分栏的目录结构,也更方便对于知识的系统总结!
兄弟姐妹们,点个赞呗!
感谢!笔芯!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值