11.1 三元运算符
在 Python 中有一种叫做三元运算符的东西,它实际上是变形版的 运算符 if else。
假设你有如下代码:
if a < b:
min = a
else:
min = b
为了这个简单的代码不占太多空间,有一种紧凑的写法。它看起来像这样:
min = a if a < b else b
三元运算符的一般形式是这样的:
变量 = 值1 if 条件 else 值2
如果 条件 为真,那么变量被赋值为 值1,如果为假则为 值2。
注意这里条件后面没有冒号。
11.2 循环中的 else 运算符
在 Python 中,运算符 else 通常与条件运算符 if 关联。然而它的使用不限于此,else 也可以在循环 for 和 while 中使用。
这种在循环中的 else 的不明显的用法可能会让初学者感到困惑,但它为程序流程控制提供了有趣的机会。
循环中的 else 怎么工作
在循环中,else 在循环正常结束后执行,但仅当循环没有被 break 运算符中断时。这个特性使 else 在需要检查循环是否提前中断的情况下非常有用。
在 for 循环中的使用示例:
for i in range(3):
password = input('输入密码: ')
if password == 'sekret':
print('密码接受。')
break
else:
print('没有输入尝试或所有输入的密码都不正确。')
这里,else 在用户三次输入错误密码时触发。如果用户输入正确密码,循环被 break 中断,else 块不会执行。
在 while 循环中的使用示例:
n = 5
while n > 0:
print(n)
n -= 1
else:
print('循环正常结束。')
在这个例子中,当循环自然结束,即条件变为假时,else 被执行。
实际意义
在循环中使用 else 在搜索算法中特别有用,当你需要确定搜索是否成功时。例如,在列表中搜索不存在的元素时,可以使用 else 在循环结束后输出失败消息。
在循环中明明确确地使用 else,这样不会让看你代码的人感到困惑。记住,循环中的 else 并不总是直观的,所以如果这样做能让代码更清晰,就加注释或选择其他方法实现逻辑。
11.3 嵌套循环
在 Python 中可以非常紧凑地编写复杂的逻辑。有时候你会需要嵌套的 if,有的时候需要嵌套的循环。我们现在来聊聊它们工作的一些细节:
嵌套循环意味着在一个循环里面有另一个循环。这让你可以,例如,处理多维数组、列表列表或其他嵌套的数据结构。
嵌套循环由外部循环和一个或多个内部循环组成。每当外部循环执行一次迭代时,内部循环会完整执行一次:
for i in range(3): # 外部循环
for j in range(3): # 内部循环
print(f"({i}, {j})")
对于外部循环来说,内部循环及其内容只是一个命令块,在每次外部循环的迭代中都会执行。外部循环根本不关心里面有多少循环以及它们是怎样的。它只是对每个来自自己列表的变量执行自己的内部命令块。
我们来打印一下 乘法表 吧——嵌套循环非常适合这个任务。通过嵌套循环创建乘法表,其中一个循环负责因数,另一个负责被乘数:
n = 5
for i in range(1, n + 1):
for j in range(1, n + 1):
print(f"{i} * {j} = {i * j}", end='\t')
print() # 为下一个因数换行
这个例子将打印出一张表:
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5
2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
为了更好地理解嵌套循环,你需要多多练习——这几乎是掌握程序设计中任何不明显东西的最快方式。
GO TO FULL VERSION