1. Python3条件语句详解
1.1 if语句基础语法
Python中的条件判断主要通过if语句实现,其基本语法结构如下:
if 条件表达式: # 条件为True时执行的代码块这里的条件表达式可以是任何返回布尔值的表达式。当表达式结果为True时,执行缩进的代码块;否则跳过。例如:
age = 18 if age >= 18: print("您已成年,可以进入")注意:Python使用缩进(通常是4个空格)来标识代码块,这是Python语法的重要特征,不同于其他语言使用大括号的方式。
1.2 if-else语句
当需要处理条件不成立的情况时,可以使用if-else结构:
if 条件表达式: # 条件为True时执行 else: # 条件为False时执行实际应用示例:
score = 85 if score >= 60: print("考试及格") else: print("考试不及格")1.3 if-elif-else多重判断
对于多个条件判断,可以使用if-elif-else结构:
if 条件1: # 条件1为True时执行 elif 条件2: # 条件2为True时执行 else: # 以上条件都不满足时执行这种结构会按顺序检查每个条件,一旦某个条件满足,就执行对应的代码块并跳过其余判断。例如:
temperature = 25 if temperature > 30: print("天气炎热") elif temperature > 20: print("天气温暖") elif temperature > 10: print("天气凉爽") else: print("天气寒冷")1.4 条件表达式的深入理解
Python的条件表达式非常灵活,可以包含:
- 比较运算符:
==,!=,>,<,>=,<= - 逻辑运算符:
and,or,not - 成员运算符:
in,not in - 身份运算符:
is,is not
复杂条件示例:
age = 25 height = 175 if (18 <= age <= 35) and (height >= 170 or height <= 160): print("符合特殊岗位要求")1.5 条件语句的嵌套
条件语句可以多层嵌套,但为了代码可读性,一般不建议超过3层:
num = 15 if num % 2 == 0: if num % 3 == 0: print("能被2和3整除") else: print("能被2整除但不能被3整除") else: if num % 3 == 0: print("不能被2整除但能被3整除") else: print("既不能被2也不能被3整除")2. Python3循环语句全面解析
2.1 while循环详解
while循环在条件为True时重复执行代码块:
while 条件表达式: # 循环体基础示例:
count = 0 while count < 5: print(f"当前计数: {count}") count += 12.1.1 无限循环与中断
有时我们需要创建无限循环,然后通过条件中断:
while True: user_input = input("请输入命令(q退出): ") if user_input == 'q': break print(f"执行命令: {user_input}")提示:在开发环境中,可以使用Ctrl+C强制终止无限循环。
2.1.2 while-else结构
while循环也可以有else子句,当循环正常结束(非break中断)时执行:
n = 5 while n > 0: print(n) n -= 1 else: print("循环正常结束")2.2 for循环深入探讨
for循环用于遍历序列(如列表、字符串等)或其他可迭代对象:
for 变量 in 可迭代对象: # 循环体2.2.1 基础遍历示例
fruits = ['apple', 'banana', 'orange'] for fruit in fruits: print(f"我喜欢吃{fruit}")2.2.2 range()函数的使用
range()生成整数序列,常用于控制循环次数:
for i in range(5): # 0到4 print(i) for i in range(2, 6): # 2到5 print(i) for i in range(0, 10, 2): # 0到9,步长2 print(i)2.2.3 enumerate()获取索引
需要同时获取索引和值时,可以使用enumerate():
fruits = ['apple', 'banana', 'orange'] for index, fruit in enumerate(fruits): print(f"索引{index}处的水果是{fruit}")2.2.4 for-else结构
与while类似,for循环也可以有else子句:
for i in range(5): print(i) else: print("循环完整执行完毕")2.3 循环控制语句
2.3.1 break语句
break用于立即退出当前循环:
for num in range(10): if num == 5: break print(num) # 只打印0-42.3.2 continue语句
continue跳过当前迭代,进入下一次循环:
for num in range(10): if num % 2 == 0: continue print(num) # 只打印奇数2.3.3 pass语句
pass是空操作语句,用于语法上需要语句但实际不需要操作的情况:
for num in range(5): if num == 3: pass # 什么都不做 print(num)3. 循环嵌套与高级应用
3.1 循环嵌套原理
循环可以多层嵌套,但要注意控制嵌套深度(一般不超过3层):
for i in range(3): for j in range(3): print(f"i={i}, j={j}")3.2 经典案例:九九乘法表
for i in range(1, 10): for j in range(1, i+1): print(f"{j}x{i}={i*j}", end="\t") print() # 换行3.3 列表推导式中的循环
列表推导式可以简洁地创建列表:
# 生成平方数列表 squares = [x**2 for x in range(10)] # 带条件的列表推导式 even_squares = [x**2 for x in range(10) if x % 2 == 0]3.4 循环优化技巧
尽量减少循环内部的计算:
# 不推荐 for i in range(len(data)): result = complex_calculation(data[i]) # 推荐 calculation_cache = [complex_calculation(x) for x in data] for i in range(len(data)): result = calculation_cache[i]使用zip()并行遍历多个序列:
names = ['Alice', 'Bob', 'Charlie'] ages = [25, 30, 35] for name, age in zip(names, ages): print(f"{name} is {age} years old")
4. 条件与循环的综合应用
4.1 质数判断程序
num = 17 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}不是质数")4.2 猜数字游戏
import random target = random.randint(1, 100) attempts = 0 while True: guess = int(input("猜一个1-100的数字: ")) attempts += 1 if guess < target: print("猜小了") elif guess > target: print("猜大了") else: print(f"恭喜!你用了{attempts}次猜对了") break4.3 冒泡排序算法
def bubble_sort(arr): n = len(arr) for i in range(n-1): for j in range(n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr numbers = [64, 34, 25, 12, 22, 11, 90] print("排序前:", numbers) print("排序后:", bubble_sort(numbers.copy()))4.4 选择排序算法
def selection_sort(arr): for i in range(len(arr)): min_idx = i for j in range(i+1, len(arr)): if arr[j] < arr[min_idx]: min_idx = j arr[i], arr[min_idx] = arr[min_idx], arr[i] return arr numbers = [64, 34, 25, 12, 22, 11, 90] print("排序前:", numbers) print("排序后:", selection_sort(numbers.copy()))5. 常见问题与调试技巧
5.1 条件语句常见错误
误用赋值运算符
=代替比较运算符==:# 错误写法 if x = 5: # 会报语法错误 print("x等于5") # 正确写法 if x == 5: print("x等于5")忘记冒号
::# 错误写法 if x > 0 # 缺少冒号 print("x是正数")
5.2 循环语句常见问题
无限循环:
# 错误示例 - 忘记更新循环变量 count = 0 while count < 5: print(count) # 缺少 count += 1修改正在遍历的列表:
# 危险操作 numbers = [1, 2, 3, 4] for num in numbers: if num % 2 == 0: numbers.remove(num) # 会跳过某些元素
5.3 调试技巧
使用print调试:
for i in range(5): print(f"循环开始,i={i}") # 调试输出 # 其他代码 print(f"循环结束,i={i}") # 调试输出使用断言检查条件:
def calculate_average(numbers): assert len(numbers) > 0, "列表不能为空" return sum(numbers) / len(numbers)使用日志记录:
import logging logging.basicConfig(level=logging.DEBUG) for i in range(3): logging.debug(f"当前i值: {i}") # 其他代码
6. 性能优化与最佳实践
6.1 循环性能优化
尽量减少循环内部的计算:
# 不推荐 for i in range(len(data)): result = complex_calculation(data[i]) # 推荐 calculation_cache = [complex_calculation(x) for x in data] for i in range(len(data)): result = calculation_cache[i]使用内置函数替代显式循环:
# 不推荐 total = 0 for num in numbers: total += num # 推荐 total = sum(numbers)
6.2 条件语句最佳实践
避免过深的嵌套:
# 不推荐 if condition1: if condition2: if condition3: # 代码 # 推荐 if not condition1: return if not condition2: return if not condition3: return # 主要代码使用字典替代复杂的if-elif链:
# 不推荐 if color == 'red': action = 'stop' elif color == 'green': action = 'go' elif color == 'yellow': action = 'caution' # 推荐 color_actions = { 'red': 'stop', 'green': 'go', 'yellow': 'caution' } action = color_actions.get(color, 'unknown')
6.3 代码可读性建议
为复杂条件添加解释性变量:
# 不易读 if (age >= 18 and has_license) or (age >= 16 and with_parent): allow_driving = True # 更清晰 is_adult_with_license = age >= 18 and has_license is_teen_with_parent = age >= 16 and with_parent allow_driving = is_adult_with_license or is_teen_with_parent保持一致的缩进风格(通常4个空格):
# 不推荐 - 混用空格和制表符 if condition: print("Hello") print("World") # 推荐 - 统一使用4个空格 if condition: print("Hello") print("World")