Trả lời nhanh
Với câu lệnh dạng 3 + 5 = a, lỗi nằm ở vế trái của dấu =: đó là biểu thức 3 + 5, không phải tên biến nên không thể nhận giá trị. Cách sửa đúng là a = 3 + 5. Còn biểu thức 3 > 5 đứng riêng thì không lỗi, kết quả là False.
Lưu ý: đề gốc bị mất một số kí hiệu nên các phương án A, B, C, D không còn nguyên vẹn. Vì vậy bài này hướng dẫn cách phân tích để em tự kết luận cho mọi câu lệnh có cùng dạng. Các ví dụ dưới đây là ví dụ tự đặt.
Ba bước kiểm tra một câu lệnh Python
- Xác định loại câu lệnh: gán (
=), so sánh (==, !=, >, <), hay gọi hàm nhưprint(). - Kiểm tra vế trái của phép gán: bắt buộc là tên biến. Số, chuỗi, phép tính đều không được.
- Đọc từ trái sang phải: giữa hai số hoặc hai giá trị phải có toán tử hoặc dấu phẩy; ngoặc phải đóng mở đủ; tên biến phải đã được gán giá trị trước khi dùng.
Phân tích câu lệnh 3 + 5 = a
Trong Python, dấu = là phép gán, không phải dấu bằng của toán học. Nó có dạng: tên_biến = biểu_thức. Máy tính tính vế phải trước, rồi cất kết quả vào biến ở vế trái.
Ở 3 + 5 = a, vế trái là 3 + 5, tức là một biểu thức. Biểu thức chỉ cho ra giá trị, không có “ô nhớ” để chứa giá trị khác. Python báo SyntaxError (nội dung thông báo khác nhau tuỳ phiên bản, ví dụ “cannot assign to expression”). Đây là lỗi cú pháp, chương trình không chạy được dòng này.
Sửa: a = 3 + 5. Khi đó a có giá trị 8.
Câu lệnh 3 > 5 có lỗi không?
3 > 5 là phép so sánh hợp lệ. Nó cho kết quả kiểu logic là False vì 3 không lớn hơn 5. Không có lỗi cú pháp. Nếu viết x = 3 > 5 thì x nhận giá trị False.
Vì vậy, khi đề cho “3 > 5” riêng lẻ và hỏi có lỗi không, đáp án là không có lỗi. Em đừng nhầm “sai về toán học” với “sai cú pháp”. Mệnh đề 3 > 5 là sai về giá trị, nhưng máy vẫn tính được.
Bảng so sánh các trường hợp hay gặp
| Câu lệnh | Lỗi? | Giải thích |
|---|---|---|
a = 3 + 5 |
Không | Vế trái là biến, vế phải là biểu thức. a bằng 8. |
3 + 5 = a |
Có | Vế trái là biểu thức, không gán được. |
5 = a |
Có | Vế trái là hằng số. |
3 > 5 |
Không | Phép so sánh, kết quả False. |
print(3 5) |
Có | Thiếu dấu phẩy hoặc toán tử giữa 3 và 5. |
3a = 5 |
Có | Tên biến không được bắt đầu bằng chữ số. |
3 + 5 == a |
Tuỳ | Cú pháp đúng (so sánh). Nhưng nếu a chưa được gán thì báo NameError khi chạy. |
Phân biệt các loại lỗi
- Lỗi cú pháp (SyntaxError): viết sai quy tắc ngôn ngữ, báo ngay khi chạy, ví dụ
3 + 5 = a. - Lỗi khi chạy (Runtime): cú pháp đúng nhưng gặp tình huống không thực hiện được, ví dụ dùng biến chưa khai báo, chia cho 0.
- Lỗi logic: chương trình chạy bình thường nhưng kết quả sai so với mong muốn, ví dụ viết nhầm công thức.
Mẹo nhớ và lỗi sai thường gặp
- Mẹo: đọc dấu
=là “nhận giá trị”, đọca = 3 + 5là “a nhận giá trị 3 + 5”. Bên trái luôn là “chiếc hộp” có tên. - Nhầm
=(gán) với==(so sánh bằng). Muốn kiểm tra hai vế bằng nhau phải dùng==. - Cho rằng câu lệnh có lỗi vì kết quả so sánh là
False. Kết quả False không phải lỗi. - Quên dấu phẩy giữa các đối số của
print.
Bài luyện tập
- Câu lệnh
10 = bcó lỗi không? Sửa lại thế nào nếu muốn biếnbbằng 10?
Đáp án: Có lỗi, vì vế trái là hằng số. Sửa:b = 10. - Sau
x = 3 > 5, biếnxcó giá trị gì?
Đáp án:False, vì 3 > 5 sai. - Câu lệnh
s + 2 = 9sai ở đâu? Viết lại đểsbằng 9 − 2.
Đáp án: Vế tráis + 2là biểu thức nên không gán được. Viết lại:s = 9 - 2.
Câu hỏi thường gặp
Vì sao 3 + 5 = a bị lỗi trong Python?
Vì dấu = là phép gán, vế trái phải là tên biến. 3 + 5 là biểu thức nên không thể nhận giá trị, Python báo SyntaxError. Viết đúng là a = 3 + 5.
Câu lệnh 3 > 5 có bị lỗi không?
Không. Đây là phép so sánh hợp lệ, kết quả là False vì 3 không lớn hơn 5. Kết quả False không phải là lỗi cú pháp.
Khác nhau giữa = và == trong Python?
Dấu = dùng để gán giá trị cho biến, còn == dùng để so sánh hai giá trị có bằng nhau không và cho kết quả True hoặc False.
Tên biến có được bắt đầu bằng chữ số không?
Không. Tên biến phải bắt đầu bằng chữ cái hoặc dấu gạch dưới, sau đó mới có thể có chữ số. Ví dụ 3a không hợp lệ nhưng a3 thì hợp lệ.