Thắc mắc về hàm range python

mình có đề bài như sau: ''Lấy ra các phần tử chia hết cho 3 trong dãy số từ 50 đến 100"
và mình viết như sau:

for x in range(50,100):
    i = x%3==0
    print("So chia het cho 3 la: ", i)

thì khi chạy nó chỉ ra 1 loạt giá trị True, False từ đầu đến cuối mà không hiện ra số. Vậy bài trên mình đã làm sai ở chỗ nào ạ, mọi người có thể góp ý cho mình được không. Thanks mọi người đã quan tâm

Tại vì nó xét x%3 có bằng không không (x%3 == 0)
Kết quả này được gán cho i.

1 Like

a = [print('So chia het cho 3 la: ', x) for x in range(50, 100) if x%3 == 0]

2 Likes

Kết quả trả ra True,false là đúng rồi mà bạn.
Vì đoạn i = x%3 ==0 tức là bạn lấy kết quả của x%3 == 0, tức là so sánh phần dư của x chia cho 3 có bằng “0” hay không? Nếu có thì gán i = True, sai thì gán i = False.

1 Like
for x in range(50,100):
    if x % 3 == 0:
        print(str(x) + ' chia het cho 3')

51 chia het cho 3
54 chia het cho 3
57 chia het cho 3
60 chia het cho 3
63 chia het cho 3
66 chia het cho 3
69 chia het cho 3
72 chia het cho 3
75 chia het cho 3
78 chia het cho 3
81 chia het cho 3
84 chia het cho 3
87 chia het cho 3
90 chia het cho 3
93 chia het cho 3
96 chia het cho 3
99 chia het cho 3
[Finished in 0.4s]

    i = x%3==0

Cái này có nghĩa là

  • kiểm tra xem x có chia hết cho 3 không, sẽ ra kết quả là boolean (hết là true, không hết là false)
  • gán kết quả true/false này cho i

Bạn print(i), tức là chỉ print kết quả true/false ra màn hình

4 Likes

Bạn dùng cách này cũng bựa này

[ to_do for var  in iterable if(some_thing)]

trong trường hợp của bạn:

[print('So chia het cho 3 la: ', number) for number in range(50,100) if(number%3) == 0 ]
2 Likes

Dạ em cảm ơn mn, em hiểu rồi ạ :)))))

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?