Nhờ mọi người góp ý code

em đang làm 1 bài toán có đề bài sau: Định nghĩa một hàm có thể in dictionary chứa các key là số từ 1 đến 20 (bao gồm cả 1 và 20) và các giá trị bình phương của chúng.
và em được hướng dẫn viết như sau:

def printDict():
    d=dict() 
    for i in range(1,21):
       d[i]=i**2 
 print (d) 
printDict()

Chương trình chạy được nhưng nó ra kết quả 1 vòng lặp dài kinh khủng ạ. Đây là 1 phần kết quả:

{1: 1}
{1: 1, 2: 4}
{1: 1, 2: 4, 3: 9}
{1: 1, 2: 4, 3: 9, 4: 16}
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
...

và cứ chạy như vậy cho đến 20: 400
Vậy mọi người cho em hỏi có cách viết nào mà khiến chương trình chỉ ra 1 dòng kết quả để cho ngắn gọn hay không ạ? Em xin cảm ơn

1 Like
dict_num = {}
for num in range(1,21):
	dict_num.update({num:(num * num)})

print(dict_num)

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19: 361, 20: 400}
[Finished in 0.6s]

Sở dĩ cái kết quả của bạn nó chay ra thiệt là dài, vì mỗi khi loop 1 lần là ban in ra kết quả ngay lúc đó luôn. Nên loop bao nhiêu lần sẽ ra bấy nhiêu dòng kết quả.

Bạn có thể sửa thành:

def printDict():
    d=dict() 
    for i in range(1,21):
       d[i]=i**2 
    return d
    
print(printDict())

Thì sẽ ra kết quả trong 1 dòng giống mình bên trên

3 Likes

Copy code về thì bị error, nên dùng space indent thay vì tab.

3 Likes

Vâng em xin cảm ơn ạ

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