Môn Tin họcQuản lý học tập Tin học

Soi lỗi hàm tính tổng giao dịch trong ứng dụng MoneyKeeper

Lớp 10Lập trìnhpythonGiải quyết vấn đề với máy tínhVận dụng cao

Thang điểm 10 · 6 test case chấm tự động · 3 tiêu chí chấm

Ứng dụng MoneyKeeper cần một hàm tinh_tong(danh_sach, loai) với hai tham số: danh_sach là danh sách các giao dịch trong ngày, loai là số nguyên quy định cách tính:

  • Nếu loai == 0: tính tổng tất cả các giao dịch (cả dương lẫn âm) để biết số dư ròng trong ngày.
  • Nếu loai != 0: chỉ tính tổng các giao dịch dương (tiền nạp/thu) để biết tổng tiền vào trong ngày.

Bạn lập trình viên đã viết đoạn code sau nhưng chạy thử thấy kết quả bị ngược so với yêu cầu:

  • def tinh_tong(danh_sach, loai):
  •     S = 0
  •     for x in danh_sach:
  •         if loai == 0:
  •             if x > 0:
  •                 S = S + x
  •         else:
  •             S = S + x
  •     return S

Hãy chỉ ra lỗi trong đoạn code trên (điều kiện bị đảo ngược so với yêu cầu), sửa lại cho đúng, rồi viết chương trình hoàn chỉnh: đọc danh sách giao dịch ở dòng đầu tiên (các số nguyên cách nhau bởi dấu cách), đọc số loai ở dòng thứ hai, gọi hàm tinh_tong đã sửa và in kết quả ra màn hình (chỉ in một số nguyên duy nhất).

InputOutputGiải thích
10 -5 20 -3 8
0
30Cộng tất cả: 10-5+20-3+8=30
10 -5 20 -3 8
1
38Chỉ cộng số dương: 10+20+8=38
-5 -10 -2
1
0Không có giao dịch dương nào
#tham số của hàm#đối số#sửa lỗi#cấu trúc rẽ nhánh#danh sách#category:tu_duy_phan_bien#difficulty:analyzing

Giáo viên giao bài này cho lớp, học sinh nộp bài trực tuyến và được chấm tự động.

Giáo viên đăng nhập để giao bài