Góp ý code tạo list chứa các giá trị bình phương của các số từ 1 đến 20 và in 5 mục đầu tiên trong list

em đang xây dựng 1 bài toán nhỏ với yêu cầu sau:
Đề:Định nghĩa một hàm có thể tạo list chứa các giá trị bình phương của các số từ 1 đến 20 (bao gồm cả 1 và 20) và in 5 mục đầu tiên trong list. Em viết như sau:

def printList():
    li=list() 
    for i in range(1,21):
        li.append(i**2)
        print (li[:5]) 
printList()

Và kết quả là một vòng lặp như sau:

[1]
[1, 4]
[1, 4, 9]
[1, 4, 9, 16]
[1, 4, 9, 16, 25]
*[...]*
[1, 4, 9, 16, 25]

Em thấy nó thực sự rất rối mắt, giờ mọi người góp ý hộ em làm sao để in ra kết quả là 5 dòng đầu không ạ? Hoặc chỉ cần ra như dòng thứ 5 cũng được ạ. Em xin cảm ơn mọi người

2 Likes

em xin lỗi nhưng em chưa thực sự hiểu lắm và thấy không có ví dụ nào cho Python nên em vẫn thấy mơ hồ ạ

2 Likes

em thấy đây chỉ là list comprehension thôi chứ có phải là cách viết khác đâu nhỉ, ý em muốn là in ra thứ tự ấy có thể là 5 cái đầu, 5 cái cuối hoặc 5 cái giữa hay vị trí thứ n nào đó đấy ạ

nếu chỉ có chuyện đơn giản như vậy, code chưa đầy 5 dòng mà bạn vẫn thấy rối thì bạn nên suy nghĩ lại việc học lâp trình có phù hợp với bạn hay không

2 Likes

Em thấy nó ra không đúng ý mình thì hỏi thôi ạ, và em còn muốn áp dụng list này vào nhiều trường hợp khác nữa để ra kết quả khác nữa anh ạ

Hãy phân tích bài toán ra theo kiểu SOLID ấy bạn. Chia chương trình thành nhiều hàm vào.
Một hàm nhận vào 1 list => trả về list bình phương
Một hàm nhận vào 1 list => trả về 5 phần tử

3 Likes

Cái này gọi là splicing/slicing.

3 Likes

Vậy thì được anh, em sẽ làm cách khác

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