Hai hàm giúp chương trình biết tương tác
Hầu hết các chương trình Python đầu tiên đều có chung một hình dạng: hỏi người dùng điều gì đó bằng input(), xử lý câu trả lời, rồi báo lại bằng print(). Hai hàm có sẵn này là cách code của bạn giao tiếp với thế giới bên ngoài.
Hãy lần lượt tìm hiểu từng hàm.
print(): in ra đầu ra
Ở dạng đơn giản nhất, print() ghi một dòng văn bản ra terminal:
Lệnh này in ra chữ hello rồi xuống dòng. Ký tự xuống dòng là thứ tách lần gọi print này với lần gọi tiếp theo trên màn hình.
Bạn có thể truyền nhiều giá trị trong một lần gọi, và Python sẽ đặt một dấu cách giữa chúng:
Đầu ra:
Name: Ada Age: 36
Các giá trị không nhất thiết phải là chuỗi. print gọi str() trên từng đối số, nên bạn có thể thoải mái trộn nhiều kiểu dữ liệu:
Đổi dấu phân cách
Nếu bạn không muốn dấu cách giữa các giá trị, hãy dùng sep:
Đổi ký tự cuối dòng
Mặc định print thêm ký tự xuống dòng vào cuối. Dùng end để thay đổi điều đó, chẳng hạn để giữ đầu ra trên cùng một dòng:
end="" là mẹo để dựng một dòng từng phần một.
print ghi ra stdout
Mặc định, print ghi ra stdout (đầu ra chuẩn), nơi đầu ra của terminal thường xuất hiện. Bạn có thể chuyển hướng nó sang stderr, một tệp hoặc bất kỳ đối tượng giống tệp nào bằng đối số file:
Để định dạng đầu ra, như hai chữ số thập phân, căn cột hay dấu phân cách trong số lớn, hãy dùng f-string bên trong print:
input(): đọc dữ liệu từ người dùng
input(prompt) dừng chương trình, hiển thị lời nhắc cho người dùng và chờ. Bất cứ thứ gì người dùng gõ cho đến khi nhấn Enter sẽ được trả về dưới dạng chuỗi.
Ba điều về input hay làm khó người mới:
Nó luôn trả về chuỗi
Kể cả khi người dùng gõ 42, thứ bạn nhận được là chuỗi "42". Bạn không thể làm phép tính trực tiếp trên nó:
Đó là lý do bạn hay thấy int(input(...)) hoặc float(input(...)) viết liền một dòng. Nếu người dùng gõ thứ không phải là số hợp lệ, int() sẽ ném ra ValueError; chúng ta sẽ xử lý chuyện này đúng cách ở chương về ngoại lệ.
Lời nhắc là không bắt buộc
Nếu bạn không truyền chuỗi lời nhắc, input() sẽ chờ trong im lặng, và đó gần như luôn là lựa chọn sai: người dùng không biết bạn đang hỏi gì. Hãy luôn truyền một lời nhắc rõ ràng:
Nó không cắt bỏ gì cả
Bất cứ thứ gì người dùng gõ, kể cả khoảng trắng ở đầu và cuối, đều được trả về nguyên vẹn. Nếu điều đó ảnh hưởng đến logic của bạn, hãy gọi .strip():
Một chương trình nhỏ hoàn chỉnh
Kết hợp tất cả lại: vài dòng code hỏi thông tin người dùng và in ra một bản tóm tắt nhỏ:
Mười hai dòng. Nó đọc từ trên xuống như một bản hướng dẫn, không giống code. Đó là phong cách mà bộ tài liệu này muốn khuyến khích.
Còn gỡ lỗi bằng print thì sao?
Đôi khi bạn sẽ nghe rằng "lập trình viên thực thụ dùng debugger, không dùng lệnh print." Câu đó nói quá. Print là một công cụ gỡ lỗi hoàn toàn tốt, nhất là với các script nhỏ và những thử nghiệm nhanh. Cứ rắc thật nhiều lệnh print khi bạn đang tìm hiểu vấn đề, rồi xóa chúng đi khi xong.
Hai mẹo nhỏ giúp bạn làm việc dễ chịu hơn:
Dấu = bên trong f-string in ra cả tên lẫn giá trị, giúp bạn đỡ phải viết đi viết lại print("name =", name).
Tiếp theo
print và input cho bạn một vòng hội thoại hoàn chỉnh: hỏi, đọc, phản hồi. Chương tiếp theo bắt đầu đưa vào các điều kiện: câu lệnh if và các toán tử quyết định chương trình sẽ làm gì dựa trên những giá trị nó nhận được.
Câu hỏi thường gặp
print() trong Python dùng để làm gì?
Hàm này ghi giá trị ra terminal. print("hello") in ra hello rồi xuống dòng. Bạn có thể truyền nhiều giá trị cách nhau bằng dấu phẩy, và mặc định print() sẽ đặt một dấu cách giữa chúng.
input() trong Python hoạt động thế nào?
input(prompt) tạm dừng chương trình, hiển thị lời nhắc cho người dùng, chờ họ gõ gì đó và nhấn Enter, rồi trả về những gì họ đã gõ dưới dạng chuỗi. Luôn là chuỗi: nếu bạn cần một con số, hãy bọc lời gọi trong int(...) hoặc float(...).
Làm sao để in trên cùng một dòng trong Python?
Truyền end="" vào print. Mặc định print thêm ký tự xuống dòng sau đầu ra; đặt end thành chuỗi rỗng (hoặc bất kỳ ký tự nào khác) sẽ thay thế ký tự xuống dòng đó.