Lists & For Loops trong Python

1. Giới thiệu về List trong Python

List là gì?

Trong Python, list là một kiểu dữ liệu dùng để lưu trữ nhiều giá trị cùng lúc, được đặt trong dấu ngoặc vuông [].

Ví dụ list có thể chứa:

  • chuỗi: ["Jan", "Feb"]
  • số nguyên: [1, 2, 3]
  • số thực: [3.14, 2.5]
  • boolean: [True, False]
  • hỗn hợp: [1, "A", True]

Ví dụ: Khởi tạo list

my_list = ["January", "February", "March"]
print(my_list)

➡️ Giải thích: List gồm 3 chuỗi đại diện cho các tháng.

2. Vì sao cần dùng List thay vì nhập từng giá trị?

Trong chương trình ban đầu, người dùng phải nhập từng ngày một:

  • Nhập 1 giá trị → chạy
  • Nhập tiếp → chạy
  • Lặp lại nhiều lần…

Điều này mất thời gian nếu nhập 10 giá trị.

Giải pháp:

⮕ Cho phép nhập tất cả giá trị 1 lần dưới dạng list:

Ví dụ nhập:

5, 8, 10, 12

Chương trình sẽ xử lý từng giá trị bằng vòng lặp.

3. Tách chuỗi thành List bằng .split()

Người dùng nhập giá trị dạng chuỗi → Python cần chuyển thành list.

Ví dụ:

user_input = "5, 8, 10"
days_list = user_input.split(", ")
print(days_list)

Kết quả:

['5', '8', '10']

➡️ .split(", ") tách chuỗi tại dấu ", "

➡️ Tránh lỗi phần tử bị dính dấu cách.

4. Xây dựng vòng lặp For để xử lý từng phần tử

Vòng lặp chạy qua từng phần tử trong list:

Cú pháp:

for element in list:
    # xử lý element

Ví dụ minh họa:

days_list = ["5", "8", "10"]

for day in days_list:
    print("Ngày:", day)

5. Ứng dụng thực tế: Xử lý nhiều giá trị ngày → tính giờ

Dưới đây là phiên bản hoàn chỉnh của chương trình cải tiến từ transcript.

CODE HOÀN CHỈNH: Chấp nhận danh sách số ngày và xử lý từng phần tử

def validate_and_execute(days):
    try:
        number_of_days = int(days)
        if number_of_days > 0:
            hours = number_of_days * 24
            print(f"{number_of_days} ngày = {hours} giờ")
        else:
            print("❌ Số ngày phải lớn hơn 0.")
    except ValueError:
        print("❌ Giá trị không hợp lệ. Vui lòng nhập số nguyên.")


while True:
    user_input = input("Nhập danh sách số ngày (phân tách bằng dấu phẩy), hoặc nhập 'exit' để thoát: ")

    if user_input.lower() == "exit":
        print("Ứng dụng đã đóng.")
        break

    # Chuyển chuỗi thành list
    days_list = user_input.split(", ")

    print(f"📌 Dữ liệu nhận được (kiểu {type(days_list)}): {days_list}")

    # Lặp qua từng giá trị
    for day_element in days_list:
        validate_and_execute(day_element)

Giải thích từng phần

1. validate_and_execute()

  • Chuyển giá trị sang int
  • Kiểm tra số dương
  • Tính số giờ
  • Xử lý lỗi nếu nhập chữ hoặc số thực

2. split(", ")

Chuyển chuỗi thành list để xử lý từng phần tử.

3. Vòng lặp for

Chạy qua từng phần tử trong list và gọi hàm xử lý.

6. Truy cập từng phần tử bằng chỉ mục

Ví dụ:

months = ["January", "February", "March"]
print(months[0])   # January
print(months[2])   # March

Chú ý:

  • Index bắt đầu từ 0
  • Nếu truy cập index không tồn tại → lỗi IndexError

Ví dụ lỗi:

print(months[5])   # Lỗi IndexError

7. Thêm phần tử vào list bằng .append()

months = ["January", "February", "March"]
months.append("April")
print(months)

➡️ Kết quả:

['January', 'February', 'March', 'April']

8. Lặp qua list để xử lý từng phần tử

Ví dụ cơ bản:

months = ["Jan", "Feb", "Mar"]

for m in months:
    print("Tháng:", m)

9. Tổng kết kiến thức

Bạn đã học:

✔ Khái niệm list

✔ Tạo list

✔ Truy cập phần tử bằng index

✔ Dùng .append() để thêm phần tử

✔ Dùng .split() để chuyển chuỗi thành list

✔ Dùng vòng lặp for để xử lý từng phần tử

✔ Ứng dụng thực tế: nhận nhiều ngày → tính giờ

Bài tập rèn luyện

Bài 1:

Nhập danh sách số và in ra bình phương của từng số.

Bài 2:

Nhập danh sách tên và in ra lời chào cho từng người.

Bài 3:

Nhập danh sách số và tính tổng chúng.

Bài 1: Nhập danh sách số và in bình phương của từng số

Code mẫu

numbers = input("Nhập danh sách số (cách nhau bằng dấu phẩy): ").split(", ")

for num in numbers:
    try:
        n = int(num)
        print(f"{n}² = {n**2}")
    except ValueError:
        print(f"❌ '{num}' không phải số hợp lệ.")

Ví dụ chạy

Input:

2, 5, 7

Output:

2² = 4
5² = 25
7² = 49

Bài 2: Nhập danh sách tên và in lời chào cho từng người

Code mẫu

names = input("Nhập danh sách tên (cách nhau bằng dấu phẩy): ").split(", ")

for name in names:
    print(f"Xin chào {name}!")

Ví dụ chạy

Input:

Linh, Nam, Vy

Output:

Xin chào Linh!
Xin chào Nam!
Xin chào Vy!

Bài 3: Nhập danh sách số và tính tổng

Code mẫu

numbers = input("Nhập danh sách số (cách nhau bằng dấu phẩy): ").split(", ")

total = 0
for num in numbers:
    try:
        total += int(num)
    except ValueError:
        print(f"❌ '{num}' không phải số hợp lệ.")

print("Tổng =", total)

Ví dụ chạy

Input:

10, 20, 5

Output:

Tổng = 35