Em mới học python và muốn hỏi ý nghĩa câu lệnh này ạ

Em làm bài tập trên Codeforces thì có thấy các pro hay có kiểu rút ngắn vòng lệnh if…else bằng câu lệnh như thế này, mọi người giải thích giúp e được không ạ:

print([“YES”,“NO”][all(n%i for i in lst)])

1 Like

Bạn có thể đưa đầy đủ tất cả lên được không?

đây bác ơi, nếu bác có link bài nào dạy về cách viết này thì cho e xin nhé
n = int(input())
lst = [4,7,47,74,447,474,477,744,747,774]
print([“YES”,“NO”][all(n%i for i in lst)])

1 Like

Chào bạn,
Ý nghĩa của đoạn
`

[“YES”,“NO”][all(n%i for i in lst)]

`
Trong phần bạn đưa ra chỉ là một phần của python có tên gọi là biểu thức điều kiện (conditional expression) . Nó có ý nghĩa rằng

("no", "yes")[boolean]

Và được giải thích là

yes() if boolean else no()

Nó sẽ nhận giá trị “yes” nếu toán tử Boolean là True và giá trị “no” nếu toán Boolean là False.
Bạn có thể gõ thẳng vào terminal của trình biên dịch python để kiểm chứng.

>>> ["YES","NO"][False] 
'YES'
>>> ["YES","NO"][True]  
'NO'
>>>

Về hàm all() trong python bạn có thể kiểm chứng nó sẽ trả về True nếu tất cả các giá trị là True và trả lại False nếu có ít nhất một giá trị là False.
Bạn có thể tìm hiểu thêm biểu thức điều kiện tại đây.

E hiểu rồi, cảm ơn mod nhé