Python: Cách in mà không cần dòng mới

Bài viết được sự cho phép của tác giả Phạm Văn Nguyên

Đi đến giải pháp:

In mà không có dòng mới trong Python3

In mà không có dòng mới trong Python2

Vấn đề

Python là một trong những ngôn ngữ lập trình dễ học nhất.

Một trong những chương trình đầu tiên bạn viết khi bạn bắt đầu học bất kỳ ngôn ngữ lập trình mới nào là  chương trình hello world .

Một  chương trình hello world trong python trông như thế này

# hello world in python
print("Hello World!")

Thật dễ dàng!

Chỉ cần một dòng và tada bạn có chương trình hello world của bạn.

Trong Python 3, print () là một hàm in ra những thứ trên màn hình (print là một câu lệnh trong Python 2) .

Như bạn có thể thấy, nó là một chức năng rất đơn giản.

Tuy nhiên, có một điều thực sự khó chịu về chức năng này.

Nó tự động in một dòng mới ‘\ n’ ở cuối dòng!

Hãy xem ví dụ này

print("Hello World!")
print("My name is Nguyenpv")
# output:# Hello World!
# My name is Nguyenpv

Như bạn có thể nhận thấy, hai chuỗi không được in lần lượt từng chuỗi trên cùng một dòng mà thay vào đó là các dòng riêng biệt.

Mặc dù đây có thể là những gì bạn thực sự muốn, nhưng không phải lúc nào cũng như vậy.

nếu bạn đến từ một ngôn ngữ khác, bạn có thể thoải mái hơn khi đề cập rõ ràng liệu một dòng mới có nên được in ra hay không.

Ví dụ: trong Java, bạn phải thể hiện rõ ràng mong muốn in một dòng mới bằng cách sử dụng chức năng println hoặc nhập ký tự dòng mới (\ n) bên trong chức năng in của bạn:

// option 1
System.out.println("Hello World!")
// option 2
System.out.print("Hello World!\n")

Vậy chúng ta nên làm gì nếu chúng ta không muốn có các ký tự dòng mới trong python?

Và đây là giải pháp!

Giải pháp

In không có dòng mới trong Python 3

Python 3 cung cấp giải pháp đơn giản nhất, tất cả những gì bạn phải làm là cung cấp thêm một đối số cho hàm print.

# use the named argument "end" to explicitly specify the end of line string
print("Hello World!", end = '')
print("My name is Nguyenpv")
# output:
# Hello World!My name is Nguyenpv

Bạn có thể sử dụng đối số end để đề cập rõ ràng chuỗi cần được nối ở cuối dòng.

Bất cứ điều gì bạn cần làm là thêm đối số end sẽ là chuỗi kết thúc.

Vì vậy, nếu bạn cung cấp một chuỗi trống, thì sẽ không có ký tự dòng mới và không có khoảng trắng nào sẽ được thêm vào đầu vào của bạn.

In không có dòng mới trong Python 2

Trong python 2, cách dễ nhất để tránh dòng mới kết thúc là sử dụng dấu phẩy ở cuối câu lệnh in của bạn

# no newlines but a space will be printed out
print "Hello World!",
print "My name is Nguyenpv"
# output
# Hello World! My name is Nguyenpv

Như bạn có thể thấy, mặc dù không có dòng mới, chúng tôi vẫn có một ký tự khoảng trắng giữa hai câu lệnh in.

Nếu bạn thực sự cần một không gian, thì đây là cách đơn giản nhất và đơn giản nhất để đi.

Nhưng nếu bạn muốn in mà không có dấu cách hoặc dòng mới thì sao?

Trong trường hợp này, bạn có thể sử dụng hàm sys.stdout.write từ module sys .

Hàm này sẽ chỉ in bất cứ thứ gì bạn nói rõ ràng để in.

Không có chuỗi kết thúc.

Không có phép thuật!

Hãy lấy một ví dụ

import sys

sys.stdout.write("Hello World!")
sys.stdout.write("My name is Nguyenpv")
# output
# Hello World!My name is Nguyenpv

Haiz, đoạn này thấy nhì nhằng, phức tạp hơn ngôn ngữ lập trình khác rồi đấy, ví dụ PHP, ở PHP thì chỉ cẩn dùng 1 hàm ví dụ “echo“, rồi muốn in như nào thì in  : ))

Phần kết luận

Trong Python 3, bạn có thể sử dụng đối số end  được đặt tên  trong hàm in và gán một chuỗi trống cho đối số này để ngăn chặn dòng mới kết thúc.

Trong Python 2, bạn có thể sử dụng dấu phẩy sau tuyên bố in của bạn nếu bạn không nhớ không gian, hoặc bạn chỉ có thể sử dụng hàm  sys.stdout.write()

Chúc các bạn học tốt.

Bài viết gốc được đăng tải tại nguyenpv.com

Có thể bạn quan tâm:

Xem thêm các vị trí tuyển dụng python hấp dẫn tại TopDev