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

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 * 24

Truyền user_input vào:

user_input = input("Nhập số ngày:\n")
days_to_hours(user_input)       # ⚠ đây là lỗi

Vấ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" * 24

Kế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:

10

Output:

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ặc float() 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ệ!")