一、条件语句
1.1 if
语句
if
语句是最基本的条件控制结构,用于根据某个条件的真假来决定是否执行对应的代码块。当条件表达式为 True
时,执行 if
后的代码块;否则,跳过该代码块。
语法格式:
if 条件表达式:
代码块
示例代码:
x = 10
if x > 5:
print("x 大于 5")
1.2 if-else
语句
当需要在条件为 False
时执行另一组代码,可以使用 if-else
语句。
语法格式:
if 条件表达式:
代码块1
else:
代码块2
示例代码:
x = 3
if x > 5:
print("x 大于 5")
else:
print("x 小于或等于 5")
1.3 if-elif-else
语句
当有多个条件需要依次判断时,可以使用 if-elif-else
结构。
语法格式:
if 条件表达式1:
代码块1
elif 条件表达式2:
代码块2
else:
代码块3
示例代码:
x = 5
if x > 5:
print("x 大于 5")
elif x == 5:
print("x 等于 5")
else:
print("x 小于 5")
1.4 嵌套 if
语句
在一个 if
语句内部可以嵌套另一个 if
语句,形成复杂的条件判断。
示例代码:
x = 8
if x > 5:
if x < 10:
print("x 在 5 和 10 之间")
else:
print("x 大于或等于 10")
else:
print("x 小于或等于 5")
1.5 if
语句的简洁写法(条件表达式)
Python 提供了一种简洁的 if
语句写法,称为条件表达式(也叫三元运算符),适用于简单的条件判断。
语法格式:
result = 值1 if 条件表达式 else 值2
示例代码:
x = 10
y = 20
max_value = x if x > y else y
print(max_value) # 输出 20
二、循环结构
2.1 while
循环
while
循环是根据条件表达式的结果决定是否执行代码块的循环结构。当条件表达式为 True
时,执行代码块;当条件表达式为 False
时,跳出循环。
语法格式:
while 条件表达式:
代码块
示例代码:
x = 0
while x < 5:
print(x)
x += 1
2.2 for
循环
for
循环用于遍历序列(如列表、元组、字符串等)或任何可迭代对象。它会依次将序列中的每个元素赋值给变量,并执行代码块。
语法格式:
for 变量 in 序列:
代码块
示例代码:
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
2.3 range()
函数
range()
函数常与 for
循环配合使用,用于生成一系列数字,常见于需要循环固定次数的场景。
语法格式:
range(start, stop[, step])
start
:计数从start
开始。默认是0
。stop
:计数到stop
结束,但不包括stop
。step
:步长,默认为1
。
示例代码:
for i in range(5):
print(i) # 输出 0, 1, 2, 3, 4
2.4 嵌套循环
循环结构也可以嵌套使用,即在一个循环的内部再嵌套另一个循环。
示例代码:
for i in range(3):
for j in range(2):
print(f"i={i}, j={j}")
2.5 break
和 continue
语句
break
语句用于立即退出循环,不再执行循环中余下的代码。continue
语句用于跳过当前循环的剩余部分,并继续下一次循环。
示例代码:
使用 break
退出循环:
for i in range(5):
if i == 3:
break
print(i) # 输出 0, 1, 2
使用 continue
跳过当前迭代:
for i in range(5):
if i == 3:
continue
print(i) # 输出 0, 1, 2, 4
三、条件语句与循环结构的高级用法
3.1 列表推导式(List Comprehension)
列表推导式是 Python 提供的一种简洁语法,用于生成列表。它可以结合条件语句和循环结构,使得代码更加简洁。
语法格式:
[表达式 for 变量 in 序列 if 条件表达式]
示例代码:
# 创建一个包含1到10之间所有偶数的列表
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers) # 输出 [2, 4, 6, 8, 10]
3.2 字典推导式(Dictionary Comprehension)
字典推导式类似于列表推导式,但用于生成字典。
语法格式:
{键: 值 for 变量 in 序列 if 条件表达式}
示例代码:
# 创建一个字典,键为数字,值为其平方
squares = {x: x**2 for x in range(1, 6)}
print(squares) # 输出 {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
3.3 集合推导式(Set Comprehension)
集合推导式用于生成集合,与列表推导式类似,但结果是一个集合(无序且不重复)。
语法格式:
{表达式 for 变量 in 序列 if 条件表达式}
示例代码:
# 创建一个包含1到10之间所有奇数的集合
odd_numbers = {x for x in range(1, 11) if x % 2 != 0}
print(odd_numbers) # 输出 {1, 3, 5, 7, 9}
3.4 生成器表达式(Generator Expression)
生成器表达式用于生成一个生成器对象,它是一种惰性求值的序列,可以在需要时动态生成元素,而不是一次性生成所有元素,适用于处理大量数据或无穷序列。
语法格式:
(表达式 for 变量 in 序列 if 条件表达式)
示例代码:
# 创建一个生成器,用于生成1到10之间的偶数
even_gen = (x for x in range(1, 11) if x % 2 == 0)
print(next(even_gen)) # 输出 2
print(next(even_gen)) # 输出 4
3.5 使用 else
语句
在 Python 中,循环结构可以结合 else
语句使用。当循环正常结束时,else
语句块会被执行;如果循环被 break
语句打断,else
语句块不会执行。
示例代码:
for i in range(5):
if i == 3:
break
print(i)
else:
print("循环正常结束")
在这个例子中,由
于循环被 break
打断,else
语句块不会执行。
四、实战案例:条件语句与循环结构在实际项目中的应用
4.1 经典的FizzBuzz问题
FizzBuzz 是一个经典的编程面试问题:打印从 1 到 100 的所有数字,但对于 3 的倍数打印 “Fizz”,对于 5 的倍数打印 “Buzz”,对于即是 3 的倍数又是 5 的倍数打印 “FizzBuzz”。
示例代码:
for i in range(1, 101):
if i % 3 == 0 and i % 5 == 0:
print("FizzBuzz")
elif i % 3 == 0:
print("Fizz")
elif i % 5 == 0:
print("Buzz")
else:
print(i)
4.2 列表去重
利用条件语句与循环结构,手动实现一个列表去重功能。
示例代码:
def remove_duplicates(lst):
unique_list = []
for item in lst:
if item not in unique_list:
unique_list.append(item)
return unique_list
my_list = [1, 2, 2, 3, 4, 4, 5]
print(remove_duplicates(my_list)) # 输出 [1, 2, 3, 4, 5]
4.3 查找质数
使用循环结构与条件判断查找指定范围内的所有质数。
示例代码:
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
prime_numbers = [x for x in range(2, 101) if is_prime(x)]
print(prime_numbers)
五、总结
Python 中的条件语句和循环结构是构建程序逻辑的核心工具。通过对这些语法结构的灵活运用,我们可以有效地控制程序的执行流程,并实现复杂的业务逻辑。本文详细介绍了 if
语句、while
循环、for
循环等基本语法,探讨了列表推导式、字典推导式、生成器表达式等高级用法,最后通过实战案例展示了条件语句与循环结构在实际项目中的应用。掌握这些内容将为你在 Python 编程中编写高效、优雅的代码打下坚实的基础。