Thiết bị xuất chuẩn trong python

Đối với định dạng bài tập này, dữ liệu đầu vào từ chương trình có thể không được xác định trước nhưng được sinh ra đặc biệt cho bài làm của bạn. Khi chấm bài, trình chấm sẽ sử dụng một chương trình đặc biệt - tương tác - để chuyển dữ liệu đầu ra đầu vào của chương trình do bạn cung cấp, và tiếp tục lấy dữ liệu đầu ra từ chương trình của bạn chuyển vào đầu . Nói cách khác, bài làm của bạn và người tương tác sẽ trao đổi dữ liệu cho nhau và lựa chọn để lấy những gì lấy được từ “lịch sử trao đổi”

Khi bạn viết lời giải cho dạng bài tương tác, điều quan trọng nhất mà bạn phải nhớ chính là. nếu bạn xuất dữ liệu ra đầu ra, có khả năng các dữ liệu đó sẽ được đưa vào bộ nhớ đệm nội bộ (bộ đệm nội bộ) và không được truyền trực tiếp tới trình tương tác. Để tránh xảy ra hiện tượng này, chúng ta sẽ sử dụng một lệnh đặc biệt

0 1 2 3 4 5 6 7 8 9
0 bất cứ khi nào bạn ra một cái gì đó. Lệnh
0 1 2 3 4 5 6 7 8 9
0 này được đi kèm trong thư viện chuẩn của hầu hết các ngôn ngữ lập trình. Ví dụ, đối với C++, bạn có thể sử dụng
0 1 2 3 4 5 6 7 8 9
2 hoặc
0 1 2 3 4 5 6 7 8 9
3 (phụ thuộc vào cách bạn nhập xuất dữ liệu - bằng
0 1 2 3 4 5 6 7 8 9
4 hoặc
0 1 2 3 4 5 6 7 8 9
5). Trong Java, you could use
0 1 2 3 4 5 6 7 8 9
0 by
0 1 2 3 4 5 6 7 8 9
7. Trong Python, ta may be used
0 1 2 3 4 5 6 7 8 9
8. Trong Pascal, chúng ta có
0 1 2 3 4 5 6 7 8 9
9

Có một số ghi chú đối với dạng bài tương tác

  • Đầu vào/ra trong các bài tập đang tương tác thường chậm hơn khá nhiều so với các bài tập thông thường - nên sử dụng scanf/printf thay vì cin/cout đối với C++
  • Thông thường, việc tự chấm thử bài làm đối với các bài đang tương tác của bài sẽ phức tạp hơn nhiều, do thí nghiệm sinh sẽ phải đóng vai là trò chơi tương tác trong quá trình chấm thử.
  • Trong C++, endl sẽ thực hiện flush một cách tự động

Sample file. đoán số

Xem thêm về tương tác tại. mật mã

Bộ đệm dữ liệu là một vùng lưu trữ bộ nhớ vật lý được sử dụng để lưu trữ tạm thời dữ liệu trong khi nó đang được di chuyển từ nơi này sang nơi khác. Dữ liệu được lưu trữ trong bộ đệm khi dữ liệu được truy xuất từ ​​thiết bị đầu vào hoặc ngay trước khi được gửi đến thiết bị đầu ra hoặc khi di chuyển dữ liệu giữa các quy trình trong máy tính. Đầu ra tiêu chuẩn của Python được lưu vào bộ đệm. Điều này có nghĩa là nó thu thập một số dữ liệu trước khi nó được ghi ra tiêu chuẩn và khi bộ đệm được lấp đầy, thì nó sẽ được ghi trên thiết bị đầu cuối hoặc bất kỳ luồng đầu ra nào khác

Hãy xem đoạn mã dưới đây




0 1 2 3 4 5 6 7 8 9
0

0 1 2 3 4 5 6 7 8 9
1

0 1 2 3 4 5 6 7 8 9
2

0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
4

0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
0

0 1 2 3 4 5 6 7 8 9
2

0 1 2 3 4 5 6 7 8 9
2
0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
4
0 1 2 3 4 5 6 7 8 9
5
0 1 2 3 4 5 6 7 8 9
6
0 1 2 3 4 5 6 7 8 9
7
0 1 2 3 4 5 6 7 8 9
8

0 1 2 3 4 5 6 7 8 9
9
0 1 2 3 4 5 6 7 8 9
0
0 1 2 3 4 5 6 7 8 9
1

0 1 2 3 4 5 6 7 8 9
9
0 1 2 3 4 5 6 7 8 9
3____04
0 1 2 3 4 5 6 7 8 9
5

đầu ra

0 1 2 3 4 5 6 7 8 9
5

Khi chương trình trên được thực thi thì cứ sau mỗi giây các số từ 0 đến 9 lại được in ra trên một dòng mới, i. e. , đầu ra sẽ tự động tuôn ra. Điều này là do, theo mặc định, tham số kết thúc của câu lệnh in được đặt thành '\ n' để xóa đầu ra

Bây giờ hãy xem đoạn mã dưới đây




0 1 2 3 4 5 6 7 8 9
0

0 1 2 3 4 5 6 7 8 9
7

0 1 2 3 4 5 6 7 8 9
2

0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
4

0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
0

0 1 2 3 4 5 6 7 8 9
2

0 1 2 3 4 5 6 7 8 9
2
0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
4
0 1 2 3 4 5 6 7 8 9
5
0 1 2 3 4 5 6 7 8 9
6
0 1 2 3 4 5 6 7 8 9
7
0 1 2 3 4 5 6 7 8 9
8

0 1 2 3 4 5 6 7 8 9
9
0 1 2 3 4 5 6 7 8 9
0
0 1 2 3 4 5 6 7 8 9
03
0 1 2 3 4 5 6 7 8 9
04
0 1 2 3 4 5 6 7 8 9
05
0 1 2 3 4 5 6 7 8 9
5

0 1 2 3 4 5 6 7 8 9
9
0 1 2 3 4 5 6 7 8 9
3____04
0 1 2 3 4 5 6 7 8 9
5

đầu ra

0 1 2 3 4 5 6 7 8 9

Khi thực hiện chương trình trên thì 9 giây đầu tiên không có kết quả, sau đó đến giây thứ 10 thì tất cả 10 số từ 0 đến 9 xuất hiện đồng thời trên một dòng cách nhau bởi khoảng trắng. Điều này là do đầu ra được lưu vào bộ đệm và nó không bị xóa bằng bất kỳ phương tiện nào

Bây giờ, hãy nhìn vào đoạn mã dưới đây




0 1 2 3 4 5 6 7 8 9
0

0 1 2 3 4 5 6 7 8 9
12

0 1 2 3 4 5 6 7 8 9
13

0 1 2 3 4 5 6 7 8 9
2

0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
4

0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
0

0 1 2 3 4 5 6 7 8 9
2

0 1 2 3 4 5 6 7 8 9
2
0 1 2 3 4 5 6 7 8 9
3
0 1 2 3 4 5 6 7 8 9
4
0 1 2 3 4 5 6 7 8 9
5
0 1 2 3 4 5 6 7 8 9
6
0 1 2 3 4 5 6 7 8 9
7
0 1 2 3 4 5 6 7 8 9
8

0 1 2 3 4 5 6 7 8 9
9
0 1 2 3 4 5 6 7 8 9
0
0 1 2 3 4 5 6 7 8 9
03
0 1 2 3 4 5 6 7 8 9
04
0 1 2 3 4 5 6 7 8 9
05
0 1 2 3 4 5 6 7 8 9
5

0 1 2 3 4 5 6 7 8 9
9
0 1 2 3 4 5 6 7 8 9
34

0 1 2 3 4 5 6 7 8 9
9
0 1 2 3 4 5 6 7 8 9
3____04
0 1 2 3 4 5 6 7 8 9
5

đầu ra

0 1 2 3 4 5 6 7 8 9

Khi chương trình trên được thực thi, các số từ 0 đến 9 được in ra mỗi giây trên cùng một dòng cách nhau bởi dấu cách. Điều này là do việc gọi

0 1 2 3 4 5 6 7 8 9
34 buộc nó phải "xóa" bộ đệm, nghĩa là nó sẽ ghi mọi thứ trong bộ đệm vào thiết bị đầu cuối, ngay cả khi thông thường nó sẽ đợi trước khi làm như vậy. Mô-đun sys cung cấp các hàm và biến được sử dụng để thao tác các phần khác nhau của môi trường thời gian chạy Python. Nó cho phép chúng tôi truy cập các tham số và chức năng dành riêng cho hệ thống

Một cách khác để đạt được chức năng tương tự như trên là đặt tham số tuôn ra của câu lệnh in thành true