
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, 12Chươ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ý elementVí 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]) # MarchChú ý:
- 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 IndexError7. 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, 7Output:
2² = 4
5² = 25
7² = 49Bà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, VyOutput:
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, 5Output:
Tổng = 35