Các Mẹo Khi Gửi Chương Trình Python3 Trên PTA

  1. Hỏi Đáp Thường Gặp ======

0.1 Thông Báo "Sai Kết Quả" Hoặc "Sai Định Dạng"

PTA kiểm tra tính đúng đắn của kết quả thông qua việc so khớp chuỗi. Có thể có các nguyên nhân sau:

  1. Sai định dạng: Định dạng đầu ra của chương trình phải giống với ví dụ trong đề bài (nội dung đầu ra thay đổi theo kết quả chạy). Nếu đầu ra của bạn thừa hoặc thiếu một khoảng trắng thì đều bị coi là sai. Ví dụ, đầu ra mẫu là 1 + 2 = 3, nhưng đầu ra của bạn lại là 1+2=3. Lý do: Thiếu khoảng trắng ở hai bên dấu += và thừa khoảng trắng sau số 3.
  2. Thêm thông tin nhắc nhở trong hàm input() Không thêm thông báo nhắc nhở vào hàm input()! Chỉ cần sử dụng input() để lấy dữ liệu. Đoạn mã sau đây là sai: x = input("Nhập:"), hãy sửa thành x = input()
  3. Câu trả lời của bạn thực sự sai (so sánh kỹ lưỡng, bao gồm cả chữ hoa/chữ thường, khoảng trắng) hoặc đề bài có lỗi (rất ít khả năng xảy ra).

0.2 Thông Báo "Trả Về Không Phải Zero"

  1. Lỗi cú pháp trong mã Với vấn đề này, hãy kiểm tra và sửa lỗi trên IDLE trước khi gửi.
  2. Có nhiều lệnh input() không cần thiết Nếu có nhiều hơn một lệnh input() mà không có dữ liệu tương ứng, sẽ dẫn đến lỗi. Ví dụ, yêu cầu nhập 1 dòng, nhưng có 2 lệnh input().

0.3 Lưu Ý Khác

Python3 trên PTA không xử lý tốt ký tự tiếng Việt, vì vậy đừng sử dụng tiếng Việt trong mã gửi lên. Khi tạo bài tập mới, không đưa tiếng Việt vào tệp đầu vào/đầu ra.

  1. Xử Lý Đầu Ra ======

1.1 Sử Dụng Hàm print Trực Tiếp

print('Nội dung muốn xuất')

1.2 Sử Dụng Hàm format Trong Chuỗi Python, Ví Dụ:

gia_tri_a = 1.111
gia_tri_b = 2.222 
print('{} + {} = {:.2f}'.format(gia_tri_a,gia_tri_b,gia_tri_a+gia_tri_b))

Đầu ra: 1.111 + 2.222 = 3.33

Ghi chú 1: {:.2f} giữ 2 chữ số thập phân. Ghi chú 2: Ký hiệu += có khoảng trắng hai bên.

1.3 Xuất Dòng Mới Hoặc Không Xuất Dòng Mới

Hàm print mặc định xuất xuống dòng, nếu không muốn xuống dòng thêm end=""

print("1", end="")
print("2", end="")
print("3")
print("4")

Đầu ra:

123
4

Phương pháp khác:

chuoi = "a"
chuoi += "b"    # Cũng có thể dùng chuoi.append("b")
chuoi += "\r\n" # Thêm xuống dòng
chuoi += "cde"  # Cũng có thể dùng chuoi += "cde"
print(chuoi)

Đầu ra:

ab
cde

  1. Xử Lý Đầu Vào ======

2.1 Lấy Chuỗi Và Chuyển Đổi Thành Giá Trị Số

Trong Python, sử dụng dau_vao = input() để lấy dữ liệu từ người dùng, dau_vao là chuỗi một dòng. Nếu muốn chuyển đổi sang kiểu số, có thể sử dụng các hàm int, float, eval, ví dụ:

dau_vao = input()
so_nguyen = int(dau_vao)   # Chuyển chuỗi sang số nguyên
so_thap_phan = float(dau_vao) # Chuyển chuỗi sang số thực
bieu_thuc = eval(dau_vao)  # Chuyển chuỗi sang biểu thức và tính toán
# Viết ngắn gọn như sau:
so_nguyen = int(input())

2.2 Lấy Nhiều Dòng Dữ Liệu

Ví dụ về dữ liệu đầu vào:

3
10
5
-10

Dòng đầu tiên là số 3, đại diện cho 3 dòng tiếp theo, mỗi dòng chứa một số. Làm thế nào để lấy giá trị từng dòng?

n = int(input()) # Lấy số 3 từ dòng đầu tiên và chuyển thành số nguyên n
for i in range(n):  # Lặp n lần
    gia_tri = int(input()) 
    print(gia_tri+1)

2.3 Tách Chuỗi Bằng Dấu Cách Hoặc Nhiều Dấu Cách?

Sử dụng hàm split() của chuỗi Ví dụ, đầu vào là 1 22 33 5, làm thế nào để lấy được các số 1 22 33 5? Ví dụ:

dau_vao = input()                # Người dùng nhập "1 22  33      5"
cac_so = dau_vao.split()  
print(cac_so[0], cac_so[1], cac_so[2], cac_so[3])

Đầu ra: 1 22 33 5 Lưu ý: Hiện tại, các phần tử trong cac_so đều là chuỗi, nếu muốn tính toán phải chuyển đổi trước. Bài tập ví dụ:

Đọc hai số từ bàn phím, sau đó cộng chúng và xuất kết quả.

Đầu vào:
1      2
Đầu ra:
3

Phương pháp 1:

cac_gia_tri = input().split()  # Lấy các phần tử từ một dòng chuỗi, cách nhau bởi 1 hoặc nhiều dấu cách
print(int(cac_gia_tri[0]) + int(cac_gia_tri[1])) # Chuyển chuỗi sang số nguyên

Phương pháp 2:

ds = [int(x) for x in input().split()] # List comprehension
print(sum(ds))

Hàm split cũng có thể chỉ định ký tự phân cách, ví dụ, đối với chuỗi 1,2,3,4,56, tách chuỗi bằng dấu ,:

chuoi = '1,2,3,4,56'.split(",")
print(chuoi)

2.4 Xử Lý Đầu Vào Với Số Hàng Không Xác Định

Bài tập ví dụ:

Có một số hàng (số lượng không xác định), mỗi hàng chứa một số nguyên.
Viết chương trình cộng tất cả các số và xuất kết quả.

Đầu vào:
1
2
3
Đầu ra:
6

Phương pháp giải quyết

tong = 0
while True:
    try:
        tong += int(input())
    except:
        break
print(tong)

Cách kiểm thử trên IDLE? Chạy chương trình, nhập các số tương ứng vào mỗi dòng, nhấn Ctrl+D để kết thúc nhập liệu.

Khác

Mã chia sẻ bài tập Python3 trên PTA: 1A831B0E3A855FFE, giáo viên có thể dùng mã này để nhập bài tập vào bộ đề tự tạo. Hoặc tìm kiếm trực tiếp trong thư viện bài tập với từ khóa jmu-python.

Các bài viết liên quan đến PTA khác:

Các mẹo khi gửi chương trình Java trên PTA Mã chia sẻ PTA-Java Nền tảng hỗ trợ giảng dạy lập trình PTA

Thẻ: python3 PTA InputOutputHandling StringManipulation

Đăng vào ngày 24 tháng 6 lúc 06:54