Làm thế nào để bạn in trên một dòng trong python?

Tìm hiểu cách in các thông báo có liên quan tới các đầu ra khác nhau bằng Python. Ví dụ cho cả Python 2 và Python 3 được cung cấp

Làm thế nào để bạn in trên một dòng trong python?
In bằng Python

Tôi viết blog này với mục đích cung cấp bối cảnh sâu sắc hơn và tầm quan trọng của việc in ấn mà nó hiếm khi có được.

Khá nhiều lập trình viên học cách viết mã bằng cách in

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
0. Tuy nhiên, hiếm khi có bất kỳ blog hoặc video nào trên internet đi sâu vào những bí ẩn của bản in bằng Python

Để giúp các lập trình viên Python 2 chuyển đổi sang Python 3, tôi sẽ cung cấp các ví dụ cho cả hai phiên bản Python 2 và 3. Bằng cách đó, bạn biết về lịch sử của

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
1 và nó đã thay đổi như thế nào trong Python 3

Nếu bạn là lập trình viên Python 2, tôi thực sự khuyên bạn nên chuyển sang Python 3. Hãy xem bài viết của tôi về Lợi ích của Python 3 so với Python 2

Mục lục

Python được gõ động

Đánh máy đề cập đến kiểm tra loại trong ngôn ngữ lập trình. Có 2 loại kiểm tra loại

  1. Đã nhập tĩnh - Kiểu dữ liệu được kiểm tra trong quá trình biên dịch
  2. Dynamically Typed - Kiểu dữ liệu được kiểm tra trong quá trình thực thi

Python là một ngôn ngữ thông dịch. Nó thực thi từng dòng câu lệnh theo từng dòng và do đó, việc kiểm tra kiểu diễn ra nhanh chóng trong khi thực thi

Do đó, Python là một ngôn ngữ được gõ động

Viết chương trình Hello World

Hãy bắt đầu với một chương trình

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
0

#Python 2
print 'Hello World'
>>> Hello World

# Python 3
print('Hello World')
>>> Hello World

VÂNG. thật dễ dàng

Bạn có thể nhận thấy rằng bạn cần chuyển tin nhắn của mình bên trong dấu ngoặc trong Python 3 so với Python 2. Đó là bởi vì print là một chức năng trong Python 3. Đó là một câu lệnh trong Python 2

Câu lệnh trong Python là một dòng mã cung cấp hướng dẫn hoặc lệnh để Python thực hiện. Một câu lệnh không bao giờ trả về bất kỳ giá trị nào

Mặt khác, các chức năng là một tập hợp các câu lệnh mà khi được gọi sẽ thực hiện một hành động dự định. Chúng được tổ chức và tái sử dụng trong tự nhiên. Các hàm luôn trả về một giá trị

Bây giờ ví dụ trên là bắt buộc khi bạn đang ở trong một IDE. Nếu bạn đang chạy mã Python của mình trên dòng lệnh, bạn thậm chí không cần sử dụng lệnh in

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

In theo mặc định cung cấp giao diện cho đối tượng đầu ra tiêu chuẩn (

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
3). Khi bạn sử dụng in, bạn đang yêu cầu trình thông dịch Python lặp lại thông báo của bạn thành đầu ra tiêu chuẩn. Ví dụ, bạn cũng có thể in một tin nhắn mà không cần sử dụng print

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World

Bạn sử dụng phương pháp

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
4 trong sys. thiết bị xuất chuẩn để xuất tin nhắn của bạn sang luồng đầu ra tiêu chuẩn

Tuy nhiên, Print dễ sử dụng hơn

Cú pháp in chung

Hãy xem cú pháp chung của print trong Python

________số 8_______

Trong cả hai phiên bản, Python chuyển đổi các đối tượng thành chuỗi (nếu chúng không phải là chuỗi) và sau đó ghi vào luồng đầu ra tiêu chuẩn

In nhiều phần tử trên cùng một dòng

Chúng ta có thể sử dụng print để viết nhiều phần tử trên một dòng

# Python 2
print 'Python', 2, 'Rocks'
>>> Python 2 Rocks

# Python 3
print('Python', 3, 'Rocks')
>>> Python 3 Rocks

In thêm khoảng trắng giữa mỗi đối tượng trước khi ghi nó vào đầu ra tiêu chuẩn. Trong Python 3, bạn có thể thấy đối số

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
5. Nó đã được đặt thành
# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
6 theo mặc định

Cả hai câu lệnh dưới đây đều tạo ra cùng một kết quả

print('Python', 3, 'Rocks')
>>> Python 3 Rocks

print('Python', 3, 'Rocks', sep=' ')
>>> Python 3 Rocks

Điều tương tự cũng xảy ra với Python 2. Tuy nhiên, không có đối số

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
7 trong Python 2. Khoảng trắng được thêm vào giữa các đối tượng theo mặc định

Bạn cũng có thể chuyển một giá trị khác cho đối số

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
5 trong Python 3. cho e. g. , bạn cũng có thể sử dụng `. ` làm dấu phân cách trong khi in

print('Python', 3, 'Rocks', sep='|')
>>> Python|3|Rocks

Những điều trên không thể đạt được với Python 2 bằng cách sử dụng câu lệnh in. Tuy nhiên, bạn có thể sử dụng phương thức tích hợp sẵn

# Python 2 and Python 3
import sys

sys.stdout.write('Hello World')
>>> Hello World
9 trong Python 2 để mô phỏng hàm in trong Python 3

# Python 2
from __future__ import print_function

print("Python","Rocks", sep="|")

In sang một dòng mới

Kiểm tra mã ví dụ này

# Python 2
print 'Python', 2, 'Rocks'
print 'I love Python'
>>> Python 2 Rocks
>>> I love Python

# Python 3
print('Python', 3, 'Rocks')
print('I love Python')
>>> Python 3 Rocks
>>> I love Python

Khi bạn có nhiều câu lệnh in, Python theo mặc định sẽ in nó xuống một dòng mới

Trong Python 2, một ký tự

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
0 được thêm vào cuối trong khi đó, trong Python 3, có một đối số
# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
1 được đặt thành
# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
0 theo mặc định

Tuy nhiên, bạn có thể thay đổi hành vi mặc định này

Để in nhiều biểu thức trên cùng một dòng, bạn có thể kết thúc câu lệnh in trong Python 2 bằng dấu phẩy (

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
3)

Bạn có thể đặt đối số

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
1 thành chuỗi ký tự khoảng trắng để in ra cùng một dòng trong Python 3

# Python 2
print 'Python', 2, 'Rocks',
print 'I love Python'
>>> Python 2 Rocks I love Python

# Python 3
print('Python', 3, 'Rocks', end=' ')
print('I love Python')
>>> Python 3 Rocks I love Python

Với Python 3, bạn có thêm sự linh hoạt khi thay đổi đối số

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
1 để in trên cùng một dòng. cho e. g

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
0

Trong ví dụ trên, dấu hoa thị(

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
6) đang được sử dụng cho đối số
# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
1

Không có cách nào rõ ràng để làm điều đó trong Python 2. Để đạt được điều trên với Python 2, bạn sẽ phải thêm

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
6 vào cuối mỗi dòng

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
1

In ra một tập tin

Bạn cũng có thể viết tin nhắn của mình vào một tệp bằng cách in bằng Python. Với mục đích này,   hãy sử dụng đối số

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
9

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
2

Trong ví dụ trên, tin nhắn được ghi vào một tệp có tên

# Python 2
print 'Python', 2, 'Rocks'
>>> Python 2 Rocks

# Python 3
print('Python', 3, 'Rocks')
>>> Python 3 Rocks
0 trong cùng một thư mục. Lưu ý việc sử dụng chức năng tích hợp
# Python 2
print 'Python', 2, 'Rocks'
>>> Python 2 Rocks

# Python 3
print('Python', 3, 'Rocks')
>>> Python 3 Rocks
1 để lưu tin nhắn vào tệp

Nếu bạn muốn gửi tin nhắn của mình đến bất kỳ nơi nào khác ngoài đầu ra tiêu chuẩn, hãy đảm bảo cung cấp một đối tượng tệp có phương thức ghi cho nó

Để ghi vào một tệp trong một thư mục khác, hãy cung cấp đường dẫn đầy đủ của tệp trong chức năng in của bạn

In ấn

Đây có lẽ là một trong những khái niệm bị bỏ qua nhiều nhất. Có lẽ bởi vì chúng tôi không thấy bất kỳ tác động trực tiếp nào trong khi chúng tôi đang in. Nhưng nó là một khái niệm quan trọng

Thông thường, Python lưu vào bộ đệm các thông báo mà bạn muốn in cho đến khi nó nhận được một dòng mới(

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
0)

Bộ đệm là gì?

Bộ đệm lưu trữ tạm thời dữ liệu đang được truyền từ nơi này sang nơi khác trong bộ nhớ chính

Đối số

# Python 2
print 'Python', 2, 'Rocks'
>>> Python 2 Rocks

# Python 3
print('Python', 3, 'Rocks')
>>> Python 3 Rocks
3 đảm bảo rằng mọi thứ trong bộ đệm được gửi ngay đến đích

Hãy xem điều này thông qua một ví dụ. Thay vì giá trị mặc định cho đối số

# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
1 (
# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
0), chúng ta sẽ để trống

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
3

Khi bạn chạy đoạn mã trên, thông báo in sẽ chỉ hiển thị sau 5 giây chế độ ngủ kết thúc. Tại sao? . Do đó, tin nhắn của bạn nằm trong bộ đệm

Sử dụng đối số

# Python 2
print 'Python', 2, 'Rocks'
>>> Python 2 Rocks

# Python 3
print('Python', 3, 'Rocks')
>>> Python 3 Rocks
3, trong Python 3, bạn có thể in trực tiếp tin nhắn ra luồng đầu ra tiêu chuẩn mà không phải đợi thời gian ngủ kết thúc

Thử thứ này đi

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
4

Ví dụ in Python

Chương trình Python để in trên cùng một dòng

Giả sử bạn có một loạt các câu lệnh in

Mã số

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
5

Đầu ra sẽ giống như bên dưới

đầu ra

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
6

Tuy nhiên, nếu bạn muốn in lặp đi lặp lại trên cùng một dòng trong Python, bạn phải sử dụng ký hiệu xuống dòng

# Python 2
print 'Python', 2, 'Rocks'
>>> Python 2 Rocks

# Python 3
print('Python', 3, 'Rocks')
>>> Python 3 Rocks
8 với đối số
# Python 2
"print" ([expression ("," expression)* [","]]
        | ">>" expression [("," expression)+ [","]])

# Python 3
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
1

Mã số

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
7

đầu ra

# Python 2
$ my-folder: python
Python 2.7.10 (default, Aug 17 2018, 19:45:58)
[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'

# Python 3
$ my-folder: python3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 03:03:55)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 'Hello World'
'Hello World'
8

Mặc dù 2 câu lệnh in đầu tiên được thực thi, dấu xuống dòng làm cho dòng xuất chuẩn tiếp theo bắt đầu ở đầu dòng hiện tại

Ngoài ra, xuống dòng sẽ chỉ thay thế số ký tự có trong câu lệnh in. Đó là lý do, bạn có thêm n ở cuối