
Accepting User Input – Nhận dữ liệu từ người dùng
Mục tiêu bài học
Sau bài học này, bạn sẽ biết:
- Cách dùng hàm
input()
- Cách hiển thị thông báo khi yêu cầu nhập dữ liệu
- Cách lưu giá trị người dùng nhập
- Cách truyền giá trị nhập vào hàm
- Tại sao cần chuyển kiểu dữ liệu (casting)
- Xử lý lỗi khi nhập chuỗi thay vì số
- Tạo chương trình hoàn chỉnh chuyển đổi ngày → giờ dựa trên nhập liệu
1. Tại sao cần User Input?
Trước đây ta chỉ tính giờ cho 4 giá trị cố định, ví dụ:
print(20 * 24)
print(35 * 24)
print(50 * 24)
print(100 * 24)→ Cách này không linh hoạt, người dùng không thể tự nhập số ngày.
Giải pháp:
Dùng input() để yêu cầu người dùng nhập số ngày bất kỳ.
2. Hàm input() – Cách hoạt động
Cú pháp đơn giản:
input()Khi chạy, Python tạm dừng và đợi người dùng nhập dữ liệu.
Giao diện trong terminal:
>>>
(blinking cursor)→ Người dùng gõ vào giá trị → nhấn Enter.
3. Thêm thông báo nhắc người dùng
Một prompt trống khiến người dùng không biết phải làm gì.
Cải thiện bằng việc thêm thông báo:
input("Nhập số ngày mà bạn muốn chuyển đổi: ")Dùng xuống dòng:
input("Nhập số ngày vào đây:\n")4. Lưu dữ liệu người dùng nhập
input() trả về một chuỗi string, nên ta cần lưu nó:
user_input = input("Nhập số ngày:\n")
print(user_input)5. Truyền giá trị nhập vào hàm
Ví dụ hàm chuyển đổi ngày thành giờ:
def days_to_hours(num_of_days):
return num_of_days * 24Truyền user_input vào:
user_input = input("Nhập số ngày:\n")
days_to_hours(user_input) # ⚠ đây là lỗiVấn đề lớn: input() luôn trả về chuỗi (string)
Nếu bạn nhập 200, Python xem nó là "200" (string).
Ví dụ lỗi:
"200" * 24Kết quả:
"200200200200200... (lặp 24 lần)"→ Đây KHÔNG phải là phép nhân số học.
6. Sửa lỗi bằng Casting – Chuyển đổi kiểu dữ liệu
Dùng int() để đổi chuỗi thành số nguyên:
user_input = input("Nhập số ngày:\n")
user_input_number = int(user_input)Bây giờ ta có thể dùng nó trong tính toán.
7. Chương trình hoàn chỉnh theo transcript
Dưới đây là toàn bộ logic chuyển đổi lại thành code thật:
def days_to_hours(num_of_days):
return num_of_days * 24
# 1. Nhận dữ liệu từ người dùng
user_input = input("Nhập số ngày mà bạn muốn chuyển đổi:\n")
# 2. Chuyển đổi kiểu dữ liệu
user_input_number = int(user_input)
# 3. Truyền vào hàm để tính toán
result = days_to_hours(user_input_number)
# 4. In kết quả
print(f"{user_input_number} ngày = {result} giờ")Ví dụ chạy thử
Người dùng nhập:
10Output:
10 ngày = 240 giờĐúng như mong đợi!
8. Chạy chương trình bằng Terminal
Trong terminal bạn sẽ thấy:
Nhập số ngày mà bạn muốn chuyển đổi:
25
25 ngày = 600 giờ→ Chương trình hoạt động độc lập không cần IDE.
Tổng kết kiến thức
Hàm input():
- Luôn trả về dạng string
- Dùng để nhận dữ liệu từ người dùng
- Có thể thêm prompt để hướng dẫn người nhập
Cần casting để dùng dữ liệu trong tính toán
- Dùng
int()hoặcfloat()khi cần
Hàm nên return để giá trị có thể được lưu dùng tiếp
BONUS – Phiên bản chống lỗi (người dùng nhập chữ)
Nếu người dùng nhập chữ "abc", chương trình sẽ lỗi.
Bạn có muốn mình viết thêm bản có kiểm tra lỗi & thông báo rõ ràng như:
try:
user_input_number = int(user_input)
except ValueError:
print("Vui lòng nhập một số hợp lệ!")