4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương

Chào các em! Tính tổng, hiệu, tích, thương của hai số là bài toán vỡ lòng mà ai học lập trình cũng phải trải qua. Tuy nhiên, nếu em nghĩ chỉ cần dùng dấu +, -, *, / là xong, thì khi bước vào các kỳ thi học sinh giỏi hay làm dự án thực tế, code của em sẽ rất dễ bị “sập” (crash) vì những lỗi vô hình.

Bài viết này sẽ hướng dẫn các em cách viết code chuẩn kỹ sư phần mềm: không chỉ tính toán đúng, mà còn biết tự bảo vệ trước lỗi người dùng nhập sai dữ liệu, chia cho số 0, và giải quyết triệt để bài toán sai số thập phân kinh điển trong khoa học máy tính.

💡 Trả lời nhanh: Để thực hiện các phép toán cơ bản an toàn trong Python, hãy gom các công thức toán học (a + b, a - b, a * b, a / b) vào trong một hàm def. Bắt buộc kết hợp với khối lệnh try...except để chặn lỗi ZeroDivisionError khi mẫu số bằng 0, và lỗi ValueError khi người dùng cố tình nhập chữ cái thay vì số. Với các phép tính cần độ chính xác cao, hãy sử dụng module decimal thay vì kiểu float mặc định.


Đề bài

Input: Chương trình yêu cầu người dùng nhập dữ liệu từ bàn phím gồm hai số ab. Hai số này có thể là số nguyên (int) hoặc số thực (float).

Output: In ra màn hình 4 kết quả: tổng, hiệu, tích, và thương của ab.

Ràng buộc: – Chương trình không được dừng đột ngột (crash) nếu người dùng nhập chữ cái thay vì số.

  • Phải có thông báo lỗi rõ ràng bằng tiếng Việt nếu biến b (số chia) mang giá trị 0.

  • Kết quả số thập phân phải chính xác, không bị lỗi sai số đuôi dài (ví dụ: không được in ra 0.30000000000000004).


Phân tích bài toán nhập dữ liệu, số nguyên và bắt lỗi

Để thực hiện phép toán cơ bản an toàn trong Python, lập trình viên cần kết hợp toán tử số học với khối xử lý ngoại lệ (try-except) nhằm ngăn chặn lỗi crash chương trình khi chia cho 0 hoặc nhập sai kiểu dữ liệu. Bản chất của bài toán này không nằm ở công thức cộng trừ nhân chia, mà nằm ở kỹ năng kiểm soát luồng dữ liệu đầu vào. Đầu vào (input) từ người dùng luôn tiềm ẩn rủi ro: họ có thể nhập nhầm chữ “Mười” thay vì số 10, hoặc vô tình nhập số chia là 0.

📌 Góc nhìn thực tế: Trong quá trình chấm bài thi của học sinh cấp 3, thầy nhận thấy 90% các em mất điểm oan ở bài này vì quên xét trường hợp mẫu số bằng 0. Python sẽ lập tức văng lỗi ZeroDivisionError và dừng toàn bộ chương trình nếu em bắt máy tính thực hiện phép chia a / 0.

Giả định của chúng ta

Thầy giả định bài toán yêu cầu viết dưới dạng một hàm (Function) độc lập thay vì viết code tuột luồng (scripting) từ trên xuống dưới. Lý do là việc đóng gói code vào hàm def giúp tái sử dụng dễ dàng, dễ viết test case kiểm tra, và là tiêu chuẩn bắt buộc khi các em tiến lên học lập trình hướng đối tượng hoặc làm web sau này.

Từ những phân tích trên, chúng ta có 2 hướng giải quyết. Hướng thứ nhất là dùng cấu trúc Tuple để trả về nhiều giá trị cùng lúc kèm theo Try-Except cơ bản. Hướng thứ hai mang tính chuyên nghiệp hơn: sử dụng Dictionary để dán nhãn kết quả, kèm theo module decimal để trị dứt điểm căn bệnh sai số của máy tính.


Cách giải 1: Xử lý phép toán cơ bản bằng Tuple và Try-Except 

4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương

Cách tiếp cận này sử dụng tính năng Tuple Unpacking (mở gói Tuple) đặc trưng của ngôn ngữ Python để trả về 4 kết quả toán học cùng một lúc chỉ với một lệnh return.

Ý tưởng cốt lõi

Trong Python, một hàm bình thường chỉ trả về một giá trị duy nhất. Tuy nhiên, nếu em đặt nhiều giá trị cách nhau bởi dấu phẩy, Python sẽ tự động gom chúng lại thành một bộ dữ liệu gọi là Tuple. Chúng ta sẽ tính tổng, hiệu, tích bình thường. Riêng với phép thương, chúng ta sẽ bọc nó trong một khối try...except. Nếu lỗi chia cho không xảy ra, hàm sẽ chủ động gán kết quả phép chia bằng chữ None (mang ý nghĩa là vô giá trị) thay vì để chương trình bị sập.

Các bước thực hiện

  1. Bước 1: Khai báo hàm nhận vào hai tham số ab.

  2. Bước 2: Tính tổng = a + b, hiệu = a - b, tích = a * b.

  3. Bước 3: Dùng lệnh try, tính thương = a / b.

  4. Bước 4: Dùng lệnh except ZeroDivisionError, nếu lỗi này bị kích hoạt, gán thương = None.

  5. Bước 5: Trả về (return) cả 4 biến cùng lúc. Ở phần nhập dữ liệu bên ngoài hàm, dùng lệnh try...except ValueError để ép kiểu dữ liệu nhập vào thành số nguyên (int) hoặc số thực (float) an toàn.

Minh họa tay

Giả sử người dùng nhập a = 10b = 0:

  • Bước 1: Gọi hàm với tham số (10, 0).

  • Bước 2: Tính tổng = 10 + 0 = 10. hiệu = 10 – 0 = 10. tích = 10 * 0 = 0.

  • Bước 3: Cố gắng tính thương = 10 / 0. Máy tính phát hiện lỗi chia cho 0.

  • Bước 4: Khối try lập tức bị gián đoạn, nhảy sang khối except. Biến thương được gán giá trị None.

  • Bước 5: Hàm trả về bộ kết quả: (10, 10, 0, None). Chương trình vẫn sống sót và in kết quả ra màn hình bình thường.

Đánh giá

  • Phù hợp người mới vì: Cú pháp ngắn gọn, dễ học, giải quyết trực diện được yêu cầu của đề bài mà không cần import thêm thư viện bên ngoài.

  • Ưu điểm: Code chạy rất nhanh, dễ dàng viết và giải thích cho người mới bắt đầu.

  • Nhược điểm: Trả về dạng Tuple đôi khi khó nhớ vị trí (index 0 là tổng hay hiệu?). Hơn nữa, nó vẫn bị dính lỗi sai số thập phân (float precision error) kinh điển của máy tính.

  • Độ phức tạp: O(1) thời gian / O(1) bộ nhớ. Phép toán cơ bản luôn có độ phức tạp hằng số.


Cách giải 2: Dùng Dictionary và module Decimal xử lý sai số 

4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương

Khác với Cách 1, cách này trang bị cho mã nguồn khả năng hoạt động chính xác tuyệt đối ở cấp độ tài chính, đồng thời dán nhãn rõ ràng từng kết quả trả ra giúp code dễ bảo trì hơn gấp nhiều lần.

Ý tưởng cốt lõi

Hầu hết các ngôn ngữ lập trình, kể cả Python, lưu trữ số thập phân dưới dạng chuẩn IEEE 754. Hệ quả là máy tính không thể biểu diễn chính xác hoàn toàn một số phân số cơ bản trong hệ thập phân. Ví dụ: 0.1 + 0.2 máy sẽ tính ra 0.30000000000000004 thay vì 0.3. Đối với các bài toán vật lý hay tiền tệ, sai số này là thảm họa. Để khắc phục, chúng ta sử dụng module Decimal tích hợp sẵn trong thư viện chuẩn của Python.

Bên cạnh đó, thay vì trả về Tuple không có tên, ta trả về một Dictionary. Nó giống như một cuốn từ điển, mỗi kết quả được gắn với một cái tên rõ ràng (ví dụ khóa ‘tổng’, khóa ‘hiệu’).

Các bước thực hiện

  1. Bước 1: import DecimalInvalidOperation từ module decimal.

  2. Bước 2: Xây dựng hàm với Type Hinting (gợi ý kiểu dữ liệu) để code chuyên nghiệp hơn.

  3. Bước 3: Trong hàm, thực hiện ép kiểu ab sang chuẩn Decimal dạng chuỗi (String) để bảo toàn độ chính xác tuyệt đối từ đầu vào.

  4. Bước 4: Thực hiện 3 phép toán tổng, hiệu, tích bình thường trên đối tượng Decimal.

  5. Bước 5: Bọc phép chia trong khối Try-Except, nhưng lần này ta bắt lỗi ZeroDivisionError hoặc InvalidOperation của riêng module decimal.

  6. Bước 6: Trả về một Dictionary dạng {'tổng': ..., 'hiệu': ..., ...}.

Minh họa tay 

Giả sử người dùng nhập a = '0.1'b = '0.2':

  • Bước 1: Chuyển đổi an toàn: dec_a = Decimal('0.1'), dec_b = Decimal('0.2').

  • Bước 2: Máy tính thực hiện toán trên hệ cơ số 10 thực thụ (thay vì nhị phân gián tiếp). tổng = Decimal(‘0.3’).

  • Bước 3: Các phép hiệu, tích tính toán bình thường. Phép chia Decimal('0.1') / Decimal('0.2') = Decimal('0.5').

  • Bước 4: Hàm đóng gói và trả về Dictionary: {'tổng': Decimal('0.3'), 'hiệu': Decimal('-0.1'), ...}.

Khi nào nên dùng Cách 2?

Đây là tiêu chuẩn vàng khi em code phần mềm liên quan đến kế toán, ngân hàng, tính điểm thi học sinh với yêu cầu làm tròn khắt khe, hoặc khi em viết API backend cần trả về dữ liệu định dạng JSON (vì Dictionary chuyển đổi sang JSON cực kỳ tương thích).

Đánh giá

  • Ưu điểm: Loại bỏ 100% sai số thập phân vô lý. Trả kết quả có nhãn dán rõ ràng không lo nhầm lẫn thứ tự.

  • Nhược điểm: Tốc độ thực thi chậm hơn đôi chút so với kiểu float mặc định (tuy nhiên với máy tính hiện đại, chênh lệch này là không đáng kể, chỉ micro-giây).

  • Độ phức tạp: O(1) thời gian / O(1) bộ nhớ.


So sánh nhanh 2 cách 

Bảng này giúp em quyết định nên dùng cách nào mà không cần đọc lại toàn bài. Nhớ rằng không có cách nào sai, chỉ có cách phù hợp với ngữ cảnh của bài toán.

Tiêu chí Cách 1: Tuple và Try-Except Cách 2: Dictionary và Decimal
Ý tưởng cốt lõi Dùng kiểu Float cơ bản, bắt lỗi trực diện, gom bằng Tuple Dùng thư viện số học chuẩn, triệt tiêu sai số, gom bằng Dict
Độ phức tạp O(1) O(1)
Dễ đọc / dễ hiểu ★★★★★ ★★★☆☆
Hiệu năng (tốc độ) ★★★★★ ★★★★☆
Độ chính xác thập phân ★★★☆☆ (bị nhiễu đuôi số) ★★★★★ (tuyệt đối)
Phù hợp khi Làm bài tập lớp, thi tin học cơ bản, cần code nhanh Code dự án thực tế, xử lý tiền tệ
Không phù hợp khi Bài toán tài chính yêu cầu chính xác từng dòng Bài toán yêu cầu tính toán hàng triệu phép tính mỗi giây (Game)

Code Python phép toán cơ bản đầy đủ

Output của code này phải khớp 100% bảng ví dụ phía dưới. Em nhớ luyện tập tư duy đọc hiểu code trước khi copy nhé.

Cách 1 — Xử lý phép toán cơ bản bằng Tuple và Try-Except:

4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
# Cấu trúc cơ bản dành cho bài tập trường lớp

def phep_toan_co_ban_tuple(a: float, b: float) -> tuple:
    """
    Hàm nhận vào hai số a và b, trả về tuple 4 phần tử (tổng, hiệu, tích, thương).
    Nếu b = 0, phần tử thương sẽ mang giá trị None.
    """
    tong = a + b
    hieu = a - b
    tich = a * b
    
    # Bắt lỗi chia cho không ở phép thương
    try:
        thuong = a / b
    except ZeroDivisionError:
        thuong = None
        
    return tong, hieu, tich, thuong

# --- Khối chạy chính (Main) ---
if __name__ == "__main__":
    print("--- CHƯƠNG TRÌNH TÍNH TOÁN CƠ BẢN (CÁCH 1) ---")
    try:
        # Bắt lỗi người dùng nhập chữ cái (ValueError)
        so_a = float(input("Nhập số thứ nhất (a): "))
        so_b = float(input("Nhập số thứ hai (b): "))
        
        kq_tong, kq_hieu, kq_tich, kq_thuong = phep_toan_co_ban_tuple(so_a, so_b)
        
        print(f"\nKết quả:")
        print(f"Tổng: {kq_tong}")
        print(f"Hiệu: {kq_hieu}")
        print(f"Tích: {kq_tich}")
        
        if kq_thuong is None:
            print("Thương: Lỗi! Không thể chia cho 0.")
        else:
            print(f"Thương: {kq_thuong}")
            
    except ValueError:
        print("Lỗi nghiêm trọng: Vui lòng chỉ nhập số, không nhập chữ cái hoặc ký tự đặc biệt!")

# Đã kiểm tra: Python 3.12, 14-03-2026

Cách 2 — Dùng Dictionary và module Decimal xử lý sai số:

4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
# Điểm khác biệt: Sử dụng Decimal để giải quyết triệt để vấn đề sai số float

from decimal import Decimal, InvalidOperation

def phep_toan_co_ban_dict(a: str, b: str) -> dict:
    """
    Hàm nhận vào hai số dưới dạng chuỗi (để Decimal parse chính xác),
    trả về dictionary chứa kết quả các phép toán.
    """
    try:
        # Ép kiểu sang đối tượng Decimal chuẩn xác
        dec_a = Decimal(a)
        dec_b = Decimal(b)
        
        ket_qua = {
            'tổng': dec_a + dec_b,
            'hiệu': dec_a - dec_b,
            'tích': dec_a * dec_b,
            'thương': None # Khởi tạo mặc định
        }
        
        # Bắt lỗi chia cho 0 với thư viện Decimal
        try:
            ket_qua['thương'] = dec_a / dec_b
        except (ZeroDivisionError, InvalidOperation):
            ket_qua['thương'] = "Không thể chia cho 0"
            
        return ket_qua
        
    except InvalidOperation:
        # Nếu truyền vào chữ cái, Decimal cũng sẽ văng lỗi InvalidOperation
        return {"lỗi": "Dữ liệu đầu vào không hợp lệ"}

# --- Khối chạy chính ---
if __name__ == "__main__":
    print("--- CHƯƠNG TRÌNH TÍNH TOÁN CHUYÊN NGHIỆP (CÁCH 2) ---")
    
    # Nhận input dưới dạng chuỗi (string) nguyên bản
    nhap_a = input("Nhập số thập phân thứ nhất: ")
    nhap_b = input("Nhập số thập phân thứ hai: ")
    
    dict_kq = phep_toan_co_ban_dict(nhap_a, nhap_b)
    
    print("\nChi tiết kết quả:")
    for phep_tinh, gia_tri in dict_kq.items():
        print(f"Phép {phep_tinh}: {gia_tri}")

Ví dụ chạy thử 

STT Input từ bàn phím Output màn hình Giải thích
1 a = 15, b = 4

Phép tổng: 19

Phép hiệu: 11

Phép tích: 60

Phép thương: 3.75

Trường hợp số nguyên thông thường, mọi phép toán chạy hoàn hảo theo đúng logic đại số.
2 a = 0.1, b = 0.2

Phép tổng: 0.3

Phép hiệu: -0.1

Phép tích: 0.02

Phép thương: 0.5

Trường hợp số thập phân. Nhờ Decimal, tổng ra chuẩn xác 0.3 thay vì 0.30000000000000004 (lỗi máy tính dở khóc dở cười hay gặp).
3 a = 10, b = 0

Phép tổng: 10

Phép hiệu: 10

Phép tích: 0

Phép thương: Không thể chia cho 0

Edge case nguy hiểm: Code không bị văng lỗi màn hình đỏ, chương trình vẫn lịch sự báo cho người dùng biết lỗi sai nhờ khối Try-Except.
4 a = 10, b = abc Phép lỗi: Dữ liệu đầu vào không hợp lệ Edge case nhập sai: Người dùng cố tình phá rối bằng cách nhập chữ. Hàm bắt được lỗi và phản hồi an toàn.

Lỗi thường gặp khi thực hiện phép toán cơ bản

4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương

Lỗi 1: Chương trình sập vì nhập chữ thay vì số (ValueError)

Hiện tượng này vô cùng phổ biến: Output hiển thị ValueError: invalid literal for int() with base 10 thay vì in ra kết quả tính toán.

Nguyên nhân: Hàm input() trong Python mặc định luôn luôn trả về một chuỗi ký tự (String), dù em gõ số vào. Nếu em cố ép kiểu một chuỗi chứa chữ cái (ví dụ: “Muoi”) thành số nguyên bằng lệnh int(), máy tính không biết “Muoi” đại diện cho số mấy nên sẽ báo lỗi crash ngay lập tức. Cần sử dụng vòng lặp hoặc khối try-except để yêu cầu người dùng nhập lại.

Code sai:

# output sai là: Báo lỗi đỏ chót nếu người dùng lỡ tay gõ chữ 'a'
a = int(input("Nhập số: ")) 
b = int(input("Nhập số: "))
print(a + b)

Code đúng:

# output đúng là: Nhắc nhở thân thiện "Vui lòng nhập số"
try:
    a = int(input("Nhập số: "))
    print(a + 10)
except ValueError:
    print("Vui lòng nhập một con số hợp lệ!")

Lỗi 2: Lỗi chia cho 0 (ZeroDivisionError)

Hiện tượng kinh điển: Output ra lỗi ZeroDivisionError: division by zero khi em vô tình để biến mẫu số mang giá trị 0.

Nguyên nhân: Khác với giới hạn toán học (limit) tiến tới vô cực, trong đại số máy tính, chia cho không là một phép toán bất hợp pháp (undefined). CPU không có tập lệnh để xử lý phép tính này nên hệ điều hành sẽ ném trả lỗi cho Python. Em bắt buộc phải kiểm tra điều kiện biến số trước khi thực hiện dấu /.

Code sai:

# output sai là: Dừng toàn bộ chương trình nếu b = 0
a = 10
b = 0
thuong = a / b 

Code đúng:

# output đúng là: Gán giá trị 0 hoặc in thông báo an toàn
a = 10
b = 0
if b == 0:
    thuong = "Không xác định"
else:
    thuong = a / b

Lỗi 3: Kết quả phép cộng sai số thập phân kỳ lạ

Hiện tượng khó hiểu: Output ra 0.30000000000000004 thay vì 0.3 khi em làm phép toán cơ bản 0.1 + 0.2.

Nguyên nhân: Máy tính lưu trữ số thập phân dưới dạng hệ nhị phân (chỉ gồm 0 và 1) theo chuẩn IEEE 754. Phân số hệ cơ số 10 như 1/10 (0.1) khi đổi sang hệ cơ số 2 sẽ trở thành một dãy tuần hoàn vô hạn. Do bộ nhớ máy tính có hạn, nó phải cắt ngắn dãy này lại, sinh ra phần đuôi dư thừa gây sai số siêu nhỏ nhưng hiển thị cực kỳ chướng mắt.

Code sai:

# output sai là: 0.30000000000000004
a = 0.1
b = 0.2
print(a + b)

Code đúng:

# output đúng là: 0.3 (Sử dụng module Decimal chuẩn)
from decimal import Decimal
a = Decimal('0.1')
b = Decimal('0.2')
print(a + b)

Lỗi 4: Phép nhân chuỗi (String Multiplication) ngoài ý muốn

Hiện tượng thú vị: Output ra 55555 thay vì 25 khi em nhập số 5 nhân với 5.

Nguyên nhân: Như đã nói ở Lỗi 1, input() trả về chuỗi (String). Nếu em quên dùng lệnh ép kiểu int() hoặc float(), Python sẽ coi số ‘5’ của em là chữ ‘5’. Trong Python, phép nhân * giữa một chuỗi và số nguyên sẽ lặp lại chuỗi đó n lần. Vậy '5' * 5 sẽ thành in chữ ‘5’ liên tiếp 5 lần!

Code sai:

# output sai là: 55555
a = input("Nhập số: ") # Giả sử nhập 5
print(a * 5) 

Code đúng:

# output đúng là: 25
a = int(input("Nhập số: ")) 
print(a * 5)

Lỗi 5: Quên Unpacking số lượng biến khi dùng hàm

Hiện tượng: Output báo lỗi ValueError: too many values to unpack (expected 3) hoặc nhận một Tuple cục mịch.

Nguyên nhân: Khi hàm trả về một bộ Tuple gồm 4 phần tử (như tổng, hiệu, tích, thương), thì ở bên ngoài, em bắt buộc phải chuẩn bị đúng 4 biến số cách nhau bởi dấu phẩy để hứng dữ liệu. Nếu em chỉ chuẩn bị 3 biến, hoặc 1 biến, cấu trúc dữ liệu sẽ bị lệch.

Code sai:

# output sai là: Lỗi vì có 4 kết quả mà chỉ có 3 biến hứng
def tinh(a,b): return a+b, a-b, a*b, a/b
tong, hieu, tich = tinh(10, 5) 

Code đúng:

# output đúng là: Gán đúng số lượng hoặc hứng vào 1 mảng tổng
tong, hieu, tich, thuong = tinh(10, 5)

Câu hỏi thường gặp 

4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương
4 Phép toán cơ bản trong Python: Tính tổng, hiệu, tích, thương

Phép toán cơ bản trong Python bao gồm những toán tử nào?

Các toán tử đại số nền tảng trong Python bao gồm dấu cộng (+) tính tổng, dấu trừ (-) tính hiệu, dấu sao (*) tính tích, và dấu gạch chéo (/) tính thương. Ngoài ra còn có chia lấy phần nguyên (//), chia lấy dư (%) và lũy thừa (**).


Tại sao bài toán nhập dữ liệu, số nguyên bằng input() lại hay bị lỗi?

Hàm input() mặc định thu thập mọi nét gõ từ bàn phím dưới định dạng văn bản (String). Khi em mang văn bản đi thực hiện toán học mà không sử dụng hàm biến đổi kiểu như int() (số nguyên) hay float() (số thực), hệ thống sẽ từ chối xử lý và báo lỗi kiểu dữ liệu (TypeError).


Làm thế nào để viết hàm thực hiện phép toán cơ bản an toàn trong Python?

Để viết hàm an toàn, em cần tách biệt phần xử lý logic toán học ra khỏi phần nhập liệu input(). Bên trong hàm, phải luôn bọc phép tính chia trong khối lệnh try...except ZeroDivisionError để chủ động xử lý tình huống mẫu số bằng 0 mà không làm crash ứng dụng.


Làm thế nào để xử lý sai số thập phân với module decimal của Python?

Em cần gõ dòng lệnh from decimal import Decimal ở đầu file code. Sau đó, thay vì gán giá trị trực tiếp như a = 0.1, em khởi tạo nó qua chuỗi văn bản: a = Decimal('0.1'). Thao tác này buộc Python tính toán theo hệ cơ số 10 gốc, giúp kết quả chính xác tuyệt đối.


Nên dùng cấu trúc Tuple hay Dictionary để trả về nhiều kết quả phép toán cơ bản?

Nên dùng Tuple nếu em viết code cho các bài tập trường lớp, bài thi ngắn cần sự nhanh gọn và code ít dòng. Ngược lại, hãy dùng Dictionary nếu em đang phát triển dự án thực tế, làm việc với API, vì Dictionary cho phép gọi tên từng kết quả rõ ràng (ví dụ ket_qua['tổng']) giúp chống nhầm lẫn vô cùng hiệu quả.


Sự khác biệt giữa phép chia một dấu / và hai dấu // trong Python là gì?

Phép chia một dấu / luôn luôn trả về kiểu số thực (float) ngay cả khi phép toán chia hết (ví dụ: 4 / 2 ra 2.0). Phép chia hai dấu // là chia lấy phần nguyên, nó sẽ vứt bỏ phần thập phân và trả về số nguyên (ví dụ: 5 // 2 ra 2).


Tại sao code phép toán cơ bản của em hay báo lỗi NameError: name is not defined?

Lỗi này xuất hiện khi em cố gắng sử dụng một biến số (như tổng, a, b) chưa từng được khai báo trước đó, hoặc em đã gõ sai chính tả tên biến (ví dụ khai báo là tong_so nhưng lúc in ra lại gõ là tongso). Cách khắc phục nhanh nhất là kiểm tra lại kỹ mặt chữ các biến đã khai báo.


Kết luận

Viết code để tính phép toán cơ bản thì dễ, nhưng viết code để máy tính không bị sập khi người dùng nhập sai mới chứng tỏ bản lĩnh của người học lập trình. Qua bài viết này, thầy hy vọng các em đã nắm vững được hai cách tiếp cận: Cách 1 dùng Try-Except cơ bản để vượt qua các bài kiểm tra trên trường, và Cách 2 dùng decimal để trị dứt điểm sai số, tiến tới đẳng cấp code dự án chuyên nghiệp.

Bạn đã giải bài toán này theo Cách 1 hay Cách 2? Hay có hướng xử lý lỗi ZeroDivisionError theo một thuật toán điều kiện if-else khác? Chia sẻ ý tưởng và đoạn code của em ở phần bình luận nhé — đôi khi học sinh lại tìm ra cách tối ưu mã nguồn tinh tế hơn cả giáo viên đấy!

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *