- 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:
- 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à=và thừa khoảng trắng sau số3. - 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àminput()! Chỉ cần sử dụnginput()để lấy dữ liệu. Đoạn mã sau đây là sai:x = input("Nhập:"), hãy sửa thànhx = input() - 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"
- 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.
- Có nhiều lệnh
input()không cần thiết Nếu có nhiều hơn một lệnhinput()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ệnhinput().
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.
- 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 + và = 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
- 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