Trả lời nhanh
Lệnh input() dùng để nhập dữ liệu từ bàn phím khi chương trình đang chạy. Chương trình dừng lại, hiển thị lời nhắc (nếu có), chờ người dùng gõ và nhấn Enter, rồi trả về nội dung đã gõ dưới dạng xâu kí tự (str) để gán cho một biến. Muốn dùng như số thì phải đổi kiểu bằng int() hoặc float().
Đề bài thường gặp và cách đọc lệnh
Dạng câu hỏi “Quan sát lệnh sau và trả lời các câu hỏi” thường cho một hoặc hai dòng lệnh có input rồi hỏi: lệnh làm gì, dữ liệu được lưu ở đâu, kiểu dữ liệu là gì. Vì đề không kèm nguyên văn đoạn lệnh, ta dùng ví dụ tự đặt dưới đây để minh hoạ cách trả lời. Em chỉ cần thay tên biến và lời nhắc bằng nội dung trong đề của mình.
ten = input("Nhập tên của em: ")
print("Xin chào", ten)
Trả lời từng câu hỏi với ví dụ trên
- Lệnh input làm gì? Hiển thị dòng chữ Nhập tên của em: trên màn hình, tạm dừng chương trình và chờ em gõ từ bàn phím.
- Khi nào chương trình chạy tiếp? Khi em nhấn phím Enter. Lúc đó toàn bộ kí tự đã gõ (không tính phím Enter) được nhận vào.
- Dữ liệu được lưu ở đâu? Ở biến
ten, nhờ phép gán=đứng trước lệnh. - Kiểu dữ liệu của
ten? Luôn làstr(xâu kí tự), kể cả khi em gõ chữ số. - Dòng
printlàm gì? In lời chào kèm nội dung vừa nhập. Nếu em gõ Lan, màn hình hiện Xin chào Lan.
Cú pháp và các thành phần của lệnh input
| Thành phần | Ý nghĩa |
|---|---|
biến = |
Nơi lưu giá trị người dùng nhập. |
input |
Tên hàm có sẵn của Python, viết chữ thường. |
( ) |
Cặp ngoặc tròn bắt buộc, kể cả khi bên trong để trống. |
"lời nhắc" |
Không bắt buộc. Giúp người dùng biết cần nhập gì. |
Dạng tổng quát: biến = input("lời nhắc"). Mẹo nhớ: input = đầu vào, dữ liệu đi từ người dùng vào chương trình; còn print là đầu ra, đi từ chương trình ra màn hình.
Vì sao input luôn trả về xâu kí tự?
Bàn phím chỉ gửi các kí tự. Python không đoán được em muốn nhập số, chữ hay ngày tháng, nên nhận tất cả như văn bản. Hãy xem ví dụ sau, nhập 3 rồi nhập 5:
a = input("Nhập a: ")
b = input("Nhập b: ")
print(a + b)
Kết quả là 35, không phải 8, vì phép + giữa hai xâu là nối xâu. Sửa lại để cộng số:
a = int(input("Nhập a: "))
b = int(input("Nhập b: "))
print(a + b)
Bây giờ kết quả là 8. Với số thực dùng float(input(...)).
Nhập nhiều giá trị trên một dòng
Khi cần nhập hai số cách nhau dấu cách, ví dụ 3 5, có thể viết:
a, b = map(int, input().split())
input() nhận cả dòng “3 5”, split() tách thành hai xâu “3” và “5”, map(int, …) đổi từng xâu thành số nguyên. Phần này có thể chưa học kĩ, em chỉ cần nắm ý tưởng.
Lỗi sai thường gặp
- Quên đổi kiểu:
tuoi = input()rồituoi + 1gây lỗiTypeErrorvì cộng xâu với số. - Viết hoa:
Input()hoặcINPUT()báoNameError, vì Python phân biệt chữ hoa và chữ thường. - Thiếu ngoặc hoặc dấu nháy:
input("Nhập a: )gây lỗi cú pháp. - Nhập sai định dạng: gõ abc khi chương trình dùng
int(input())gâyValueError. - Nhầm lời nhắc với giá trị: lời nhắc chỉ để hiển thị, không được lưu vào biến.
Bài luyện tập có đáp án
Bài 1. Đoạn lệnh sau có lỗi không? Nếu có, hãy sửa.
tuoi = input("Nhập tuổi: ")
print(tuoi + 1)
Đáp án: Có lỗi TypeError vì tuoi là xâu, không cộng được với số 1. Sửa thành tuoi = int(input("Nhập tuổi: ")).
Bài 2. Viết chương trình nhập chiều dài và chiều rộng (số nguyên) của hình chữ nhật rồi in ra diện tích.
Đáp án:
dai = int(input("Chiều dài: "))
rong = int(input("Chiều rộng: "))
print("Diện tích:", dai * rong)
Bài 3. Nhập vào 5 với đoạn x = input() rồi print(x * 3). Màn hình hiện gì?
Đáp án: 555, vì x là xâu “5” và nhân xâu với 3 là lặp xâu ba lần. Nếu muốn ra 15, phải dùng int(input()).
Ghi nhớ
input()nhận dữ liệu từ bàn phím, dừng chương trình cho đến khi nhấn Enter.- Giá trị nhận được luôn có kiểu
str. - Cần số thì bọc bằng
int()hoặcfloat(). - Lời nhắc trong ngoặc giúp chương trình thân thiện hơn nhưng không bắt buộc.
Câu hỏi thường gặp
Lệnh input trong Python có chức năng gì?
Lệnh input nhận dữ liệu người dùng gõ từ bàn phím, dừng chương trình cho đến khi nhấn Enter rồi trả về nội dung đó dưới dạng xâu kí tự để gán vào biến.
Vì sao nhập số bằng input mà không cộng được?
Vì input luôn trả về kiểu str. Cộng hai xâu là nối xâu, cộng xâu với số gây lỗi TypeError. Cần dùng int() hoặc float() để đổi sang số trước khi tính.
Trong input có bắt buộc phải có lời nhắc không?
Không bắt buộc. Có thể viết input() với ngoặc trống, nhưng nên có lời nhắc để người dùng biết cần nhập gì.
Làm sao nhập hai số trên cùng một dòng?
Dùng a, b = map(int, input().split()). Khi chạy, gõ hai số cách nhau một dấu cách rồi nhấn Enter.