以下是另一种思考方式:
假设您有两个特定的条件,即if / else catchall结构是不够的:
例:
我有一个3 X 3 tic-tac-toe板,我想打印两个对角线的坐标,而不是其余的正方形。
我决定使用和if / elif结构代替......
for row in range(3):
for col in range(3):
if row == col:
print('diagonal1', '(%s, %s)' % (i, j))
elif col == 2 - row:
print('\t' * 6 + 'diagonal2', '(%s, %s)' % (i, j))输出是:
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)可是等等!我想包括diagonal2的所有三个坐标,因为(1,1)也是对角线2的一部分。
'elif'引起了对'if'的依赖,因此如果原来'if'被满足,'elif'将不会启动,即使'elif'逻辑也满足条件。
让我们将第二个“elif”更改为“if”。
for row in range(3):
for col in range(3):
if row == col:
print('diagonal1', '(%s, %s)' % (i, j))
if col == 2 - row:
print('\t' * 6 + 'diagonal2', '(%s, %s)' % (i, j))我现在得到了我想要的输出,因为两个'if'语句是互斥的。
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)最终知道您想要实现的类型或结果将决定您编码的条件关系/结构的类型。