Python 程序结构
程序结构概述
程序结构描述了程序中代码的执行过程。按照不同的执行过程,可以将程序结构划分为三大类型:
- 顺序结构:代码按顺序逐行执行
- 选择结构:根据条件选择执行不同的代码块
- 循环结构:重复执行某段代码
顺序结构
在 Python 中,顺序结构是程序执行的基本流程,即代码按照从上到下的顺序依次执行,没有分支、循环或跳转。这是最简单也是最基础的程序结构。
# 接收用户输入
name = input("请输入你的名字:")
age = int(input("请输入你的年龄:"))
# 数据处理
next_year_age = age + 1
# 输出结果
print(f"你好,{name}!")
print(f"今年你{age}岁,明年你将{next_year_age}岁。")
顺序结构特点:
- 代码一行一行依次执行,不会跳过任何一行
- 前一条语句执行完毕后,才会执行下一条语句
- 是所有复杂程序结构(分支、循环等)的基础
选择结构
选择结构是编程中的基本控制结构之一,它允许程序根据条件判断决定执行哪部分代码。在 Python 中,主要通过 if、elif 和 else 关键字实现。
基本语法
单分支:if 语句
# 基本格式
if 条件:
# 条件为真时执行的代码
# 示例
age = 18
if age >= 18:
print("您已成年")
案例1:判断数字是否为正数
num = float(input("请输入一个数字:"))
if num > 0:
print("这是一个正数")
双分支:if-else 语句
if 条件表达式:
# 条件为真时执行的代码块
else:
# 条件为假时执行的代码块
案例1:判断数字奇偶性
num = int(input("请输入一个整数:"))
if num % 2 == 0:
print(f"{num} 是偶数")
else:
print(f"{num} 是奇数")
案例2:成绩及格判断
score = float(input("请输入成绩:"))
if score >= 60:
print("恭喜,成绩及格!")
else:
print("很遗憾,成绩不及格")
多条件判断:if-elif-else
# 基本格式
if 条件1:
# 条件1为真时执行
elif 条件2:
# 条件2为真时执行
else:
# 所有条件都不满足时执行
# 示例:成绩评级
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 70:
print("中等")
elif score >= 60:
print("及格")
else:
print("不及格")
嵌套条件语句
# 示例:判断一个数是否为偶数且大于10
num = 14
if num % 2 == 0: # 判断是否为偶数
if num > 10: # 嵌套判断是否大于10
print("这个数是偶数且大于10")
else:
print("这个数是偶数但不大于10")
else:
print("这个数是奇数")
三元运算符
# 基本格式
值1 if 条件 else 值2
# 示例
age = 20
status = "成年" if age >= 18 else "未成年"
print(status) # 输出:成年
选择结构练习题
练习1:三角形类型判断
编写一个程序,输入三角形的三条边长,判断:
- 是否能构成三角形(任意两边之和大于第三边)
- 如果能构成三角形,进一步判断是等边、等腰还是一般三角形
a = float(input("请输入第一条边长:"))
b = float(input("请输入第二条边长:"))
c = float(input("请输入第三条边长:"))
# 判断是否能构成三角形
if a + b > c and a + c > b and b + c > a:
print("可以构成三角形")
# 判断三角形类型
if a == b == c:
print("这是等边三角形")
elif a == b or a == c or b == c:
print("这是等腰三角形")
else:
print("这是一般三角形")
else:
print("不能构成三角形")
练习2:快递运费计算
'''
题目:输入快递重量(kg)和是否为同城(1 = 同城,0 = 异地),计算运费:
同城:
重量≤3kg → 运费 8 元
重量 > 3kg → 超出部分每 kg 加 2 元(如 4kg=8+2=10 元)
异地:
重量≤1kg → 运费 12 元
1kg < 重量≤5kg → 运费 20 元
重量 > 5kg → 超出部分每 kg 加 5 元(如 6kg=20+5=25 元)
打印最终运费。
'''
综合练习:ATM 机模拟程序
设计一个简单的 ATM 机模拟程序,实现以下功能:
初始界面显示密码输入框(预设正确密码为
123456)- 密码输入错误 → 提示"密码错误,退出程序"
- 密码输入正确 → 进入主菜单
主菜单提供 4 个选项:
- 查询余额
- 存款
- 取款
- 退出
各功能规则:
- 查询余额:显示当前余额(初始余额为 1000 元)
- 存款:输入存款金额(必须为正数),若金额合法则更新余额并显示;否则提示"存款金额无效"
- 取款:输入取款金额(必须为正数且不超过当前余额),若金额合法则更新余额并显示;否则提示"取款金额无效"或"余额不足"
- 退出:显示"感谢使用,再见!"并结束程序
# ATM 模拟程序
balance = 1000 # 初始余额
password = "123456" # 预设密码
# 密码验证
input_password = input("请输入密码:")
if input_password != password:
print("密码错误,退出程序")
else:
while True:
print("\n=== ATM 主菜单 ===")
print("1. 查询余额")
print("2. 存款")
print("3. 取款")
print("4. 退出")
choice = input("请选择操作(1-4):")
if choice == "1":
print(f"当前余额:{balance}元")
elif choice == "2":
amount = float(input("请输入存款金额:"))
if amount > 0:
balance += amount
print(f"存款成功!当前余额:{balance}元")
else:
print("存款金额无效")
elif choice == "3":
amount = float(input("请输入取款金额:"))
if amount > 0:
if amount <= balance:
balance -= amount
print(f"取款成功!当前余额:{balance}元")
else:
print("余额不足")
else:
print("取款金额无效")
elif choice == "4":
print("感谢使用,再见!")
break
else:
print("无效选择,请重新输入")
循环结构
循环结构是编程中的基本控制结构之一,它允许程序重复执行某段代码,直到满足特定条件为止。Python 提供了两种主要的循环结构:for 循环和 while 循环。
for 循环
for 循环用于遍历序列(如列表、元组、字符串)或其他可迭代对象中的元素。
基本语法
for 变量 in 序列:
# 循环体代码
range() 函数
range() 是 Python 中的一个内置函数,用于生成一个不可变的整数序列。它通常与 for 循环结合使用,用于控制循环的次数或遍历数字序列。
range() 函数的三种形式:
range(stop)- 生成从 0 开始到 stop-1 的整数序列
for i in range(5):
print(i) # 输出: 0, 1, 2, 3, 4
range(start, stop)- 生成从 start 开始到 stop-1 的整数序列
for i in range(2, 7):
print(i) # 输出: 2, 3, 4, 5, 6
range(start, stop, step)- 生成从 start 开始到 stop-1 的整数序列,步长为 step
for i in range(1, 10, 2):
print(i) # 输出: 1, 3, 5, 7, 9
for i in range(10, 0, -1):
print(i) # 输出: 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
案例演示
# 案例1:遍历列表
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
for fruit in fruits:
print(f"我喜欢吃{fruit}")
# 案例2:遍历字符串
word = "Python"
for char in word:
print(char)
# 案例3:使用range()函数
# 打印0到4
for i in range(5):
print(i)
# 打印2到6
for i in range(2, 7):
print(i)
# 打印1到10,步长为2
for i in range(1, 11, 2):
print(i)
while 循环
while 循环在给定条件为真时重复执行代码块。
基本语法
while 条件:
# 循环体代码
案例演示
# 案例1:计数器
count = 0
while count < 5:
print(f"计数: {count}")
count += 1 # 重要:不要忘记更新条件变量,否则会导致无限循环
# 案例2:用户输入验证
password = ""
while password != "secret":
password = input("请输入密码: ")
print("密码正确!")
# 案例3:猜数字游戏
import random
number = random.randint(1, 10)
guess = 0
attempts = 0
while guess != number:
guess = int(input("猜一个1到10之间的数字: "))
attempts += 1
if guess < number:
print("猜小了!")
elif guess > number:
print("猜大了!")
print(f"恭喜!你在{attempts}次尝试后猜对了!")
循环控制语句
break:立即终止整个循环continue:跳过当前迭代,继续下一次迭代
案例演示
# break示例:找到第一个能被7整除的数
for i in range(1, 100):
if i % 7 == 0:
print(f"找到第一个能被7整除的数: {i}")
break
# continue示例:打印1-10中的奇数
for i in range(1, 11):
if i % 2 == 0:
continue # 跳过偶数
print(i)
循环中的 else 子句
在 Python 中,循环可以有一个可选的 else 子句,它在循环正常结束(即不是通过 break 语句终止)时执行。
# for循环中的else
for i in range(5):
print(i)
else:
print("循环正常结束")
# while循环中的else
count = 0
while count < 5:
print(count)
count += 1
else:
print("循环正常结束")
# 与break结合使用
for i in range(10):
if i == 5:
print("遇到5,提前退出")
break
print(i)
else:
print("循环正常结束") # 这行不会执行,因为循环被break终止
嵌套循环
循环可以嵌套,即一个循环内部包含另一个循环。
# 打印矩形图案
rows = 4
cols = 6
for i in range(rows):
for j in range(cols):
print("*", end=" ")
print() # 换行
# 打印直角三角形
for i in range(1, 6):
for j in range(i):
print("*", end=" ")
print()
# 打印九九乘法表
for i in range(1, 10):
for j in range(1, i+1):
print(f"{j}×{i}={i*j}", end="\t")
print()
循环结构练习题
练习1:计算1到100的和
total = 0
for i in range(1, 101):
total += i
print(f"1到100的和是: {total}")
练习2:质数判断
num = int(input("请输入一个整数: "))
if num > 1:
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
print(f"{num}不是质数")
break
else:
print(f"{num}是质数")
else:
print(f"{num}不是质数")
练习3:打印等腰三角形
n = 5
for i in range(1, n+1):
# 打印空格
for j in range(n - i):
print(" ", end="")
# 打印星号
for k in range(2 * i - 1):
print("*", end="")
print()
练习4:找出100以内的所有质数
print("100以内的质数有:")
for num in range(2, 101):
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
break
else:
print(num, end=" ")
总结
选择结构要点
- 使用
if进行条件判断 - 使用
elif处理多个条件 - 使用
else处理所有其他情况 - 注意代码缩进(Python 使用缩进来标识代码块)
- 可以使用嵌套条件处理复杂逻辑
- 三元运算符适合简单的条件赋值
循环结构要点
- 确保循环条件最终会变为 False,避免无限循环
- 使用合适的循环结构(for 适合已知迭代次数,while 适合条件控制)
- 合理使用 break 和 continue 优化循环逻辑
- 注意代码缩进,Python 依靠缩进来确定代码块
不断练习这些程序结构,你会更加熟练地运用它们解决各种编程问题!