Python条件语句与循环结构深度解析
一、条件语句全面讲解
1. 基本条件结构
核心关键字:
-
if
:主条件判断 -
elif
:附加条件判断(可多个) -
else
:默认情况(可选)
语法结构:
if 条件1:# 条件1为True时执行
elif 条件2:# 条件2为True时执行
else:# 其他情况执行
比较运算符:
运算符 | 描述 | 示例 | 数学符号 |
---|---|---|---|
== | 等于 | 5 == 5 → True | = |
!= | 不等于 | 3 != 2 → True | ≠ |
> | 大于 | 10 > 7 → True | > |
< | 小于 | 4 < 6 → True | < |
>= | 大于等于 | 8 >= 8 → True | ≥ |
<= | 小于等于 | 5 <= 5.0 → True | ≤ |
案例1:成绩评级系统
score = 88if score >= 90:grade = "A"remark = "优秀"
elif score >= 80: # 80-89grade = "B"remark = "良好"
elif score >= 70: # 70-79grade = "C" remark = "中等"
elif score >= 60: # 60-69grade = "D"remark = "及格"
else: # <60grade = "F"remark = "不及格"print(f"成绩等级:{grade},评语:{remark}")
2. 复杂条件组合
逻辑运算符:
-
and
:与(两个条件都为True) -
or
:或(至少一个条件为True) -
not
:非(取反)
案例2:登录验证
username = "admin"
password = "123456"
input_user = input("用户名:")
input_pwd = input("密码:")if input_user == username and input_pwd == password:print("登录成功!")
elif input_user == username or input_pwd == password:print("用户名或密码错误")
else:print("认证失败")
运算符优先级:
-
()
括号 -
**
指数 -
* / // %
乘除 -
+ -
加减 -
== != > < >= <=
比较 -
not
逻辑非 -
and
逻辑与 -
or
逻辑或
案例3:闰年判断
year = 2024# 能被4整除但不能被100整除,或者能被400整除
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:print(f"{year}年是闰年")
else:print(f"{year}年不是闰年")
3. 特殊条件表达式
三元运算符:
# 传统写法
if age >= 18:status = "成年"
else:status = "未成年"# 三元运算符写法
status = "成年" if age >= 18 else "未成年"
案例4:数字奇偶判断
num = 7
result = "奇数" if num % 2 != 0 else "偶数"
print(f"{num}是{result}")
二、循环结构深入解析
1. while循环
基本结构:
while 条件:# 循环体if 退出条件:break
案例5:密码重试机制
MAX_ATTEMPTS = 3
attempts = 0
correct_pin = "1234"while attempts < MAX_ATTEMPTS:user_input = input("请输入4位PIN码:")if user_input == correct_pin:print("解锁成功!")breakelse:attempts += 1print(f"密码错误,剩余尝试次数:{MAX_ATTEMPTS - attempts}")
else: # 循环正常结束执行(非break退出)print("账户已锁定,请稍后再试")
循环控制语句:
-
break
:立即退出整个循环 -
continue
:跳过当前迭代,进入下一次循环 -
pass
:空操作,占位符
案例6:数字过滤
num = 0
while num < 10:num += 1if num % 2 == 0:continue # 跳过偶数if num > 7:break # 大于7时退出print(num) # 输出:1 3 5 7
2. for循环与range函数
range函数详解:
range(start, stop, step)
# start:起始值(默认为0)
# stop:结束值(不包含)
# step:步长(默认为1)
案例7:数字序列生成
# 生成0-4
print(list(range(5))) # [0, 1, 2, 3, 4]# 生成2-8,步长2
print(list(range(2, 9, 2))) # [2, 4, 6, 8]# 反向生成
print(list(range(5, 0, -1))) # [5, 4, 3, 2, 1]
for循环应用:
案例8:乘法表
for i in range(1, 10): # 外层循环1-9for j in range(1, i+1): # 内层循环1-iprint(f"{j}x{i}={i*j}", end="\t")print() # 换行# 输出:
# 1x1=1
# 1x2=2 2x2=4
# 1x3=3 2x3=6 3x3=9
# ...
3. 猜数字游戏优化版
import randomdef guess_number():target = random.randint(1, 100)attempts = 0max_attempts = 7print("猜数字游戏(1-100),你有7次机会")while attempts < max_attempts:try:guess = int(input(f"第{attempts+1}次猜测:"))except ValueError:print("请输入有效数字!")continueif guess == target:print(f"恭喜!你在{attempts+1}次内猜中了数字{target}")returnelif guess < target:print("猜小了")else:print("猜大了")attempts += 1remaining = max_attempts - attemptsif remaining > 0:print(f"剩余机会:{remaining}")print(f"游戏结束,正确答案是:{target}")# 启动游戏
guess_number()
三、高级循环技巧
1. 循环中的else子句
当循环正常结束(非break退出)时执行
案例9:素数判断
num = 13
for i in range(2, num):if num % i == 0:print(f"{num}不是素数")break
else: # 循环完整执行才会进入print(f"{num}是素数")
2. enumerate函数
同时获取索引和值
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, start=1):print(f"{index}. {fruit}")# 输出:
# 1. apple
# 2. banana
# 3. cherry
3. zip函数
并行迭代多个序列
names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]for name, score in zip(names, scores):print(f"{name}: {score}分")
四、实战项目:简易计算器
while True:print("\n简易计算器")print("1. 加法")print("2. 减法") print("3. 退出")choice = input("请选择操作(1/2/3): ")if choice == "3":print("感谢使用,再见!")breakif choice not in ("1", "2"):print("无效输入,请重新选择")continuetry:num1 = float(input("输入第一个数字: "))num2 = float(input("输入第二个数字: "))except ValueError:print("请输入有效数字!")continueif choice == "1":result = num1 + num2print(f"结果: {num1} + {num2} = {result}")elif choice == "2":result = num1 - num2print(f"结果: {num1} - {num2} = {result}")
五、学习要点总结
-
条件语句要点:
-
每个条件分支必须正确缩进
-
elif
可以有多个,else
最多一个 -
复杂条件使用括号明确优先级
-
-
循环结构要点:
-
避免无限循环(确保有退出条件)
-
大数据集优先考虑for循环
-
需要索引时使用
enumerate
-
-
最佳实践:
-
循环体内避免过多嵌套
-
使用有意义的循环变量名
-
复杂逻辑可拆分为函数
-
通过充分练习这些控制结构,你将能够编写更加灵活和强大的Python程序。建议每天至少完成3个不同类型的条件/循环练习题来巩固知识。