Dưới đây là một cách khác để suy nghĩ về điều này:
Hãy nói rằng bạn có hai cụ điều kiện if/cấu trúc catchall khác sẽ không đủ:
Ví dụ:
Tôi có bảng 3 x 3 tic-tac-toe và tôi muốn in tọa độ của cả hai đường chéo chứ không phải phần còn lại của hình vuông.
tôi quyết định sử dụng và nếu cấu trúc/elif thay vì ...
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))
Đầu ra là:
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
Nhưng chờ đợi! Tôi muốn bao gồm cả ba tọa độ của diagonal2 vì (1, 1) cũng là một phần của đường chéo 2.
'elif' gây ra sự phụ thuộc với 'if' sao cho nếu 'if' ban đầu được thỏa mãn thì 'elif' sẽ không bắt đầu ngay cả khi logic 'elif' thỏa mãn điều kiện.
Thay đổi 'elif' thứ hai thành 'if' thay thế.
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))
Bây giờ tôi nhận được kết quả mà tôi muốn vì hai câu lệnh 'if' loại trừ lẫn nhau.
diagonal1 (0, 0)
diagonal2 (0, 2)
diagonal1 (1, 1)
diagonal2 (1, 1)
diagonal2 (2, 0)
diagonal1 (2, 2)
Cuối cùng biết loại hoặc kết quả bạn muốn đạt được sẽ xác định loại mối quan hệ/cấu trúc có điều kiện nào.
xin lỗi, tôi đã sửa chúng – Billjk