这是对此的另一种思考方式:
假设您有两个特定条件,即if / else catchall结构不能满足要求:
例:
我有一个3 X 3井字游戏板,我想打印两个对角线而不是其余正方形的坐标。
我决定使用和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)
可是等等!我想包括对角线2的所有三个坐标,因为(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)
最终知道要实现哪种类型或结果将决定您要编写哪种类型的条件关系/结构。