Trong Python 3, bạn phải bao quanh tất cả câu lệnh print bằng ngoặc đơn. Nếu bạn thử in chuỗi ra console mà không bao quanh chuỗi trong ngoặc đơn, bạn sẽ gặp lỗi SyntaxError: Missing parentheses in call to 'print'.
Hướng dẫn này thảo luận về ý nghĩa lỗi này và cách dùng câu lệnh print trong Python. Chúng ta sẽ đi qua ví dụ để bạn học cách khắc phục.
SyntaxError: Missing parentheses in call to 'print'
Python 3 là bản cập nhật lớn thứ ba cho ngôn ngữ lập trình. Trong những năm gần đây, nó đã trở thành phiên bản Python ưu tiên. Python 3 thay đổi cách viết câu lệnh print. Câu lệnh print độc lập hoạt động trong Python 2 và in câu lệnh ra console.
Trong Python 3, print là một hàm. Điều này có nghĩa là bạn cần bao quanh nội dung chuỗi bạn muốn in ra console bằng ngoặc đơn như bạn làm với bất kỳ lời gọi hàm bình thường nào.
Ví dụ minh họa
Viết chương trình in tên tất cả học sinh lớp tư có tên bắt đầu bằng "A". Đầu tiên, định nghĩa danh sách tên học sinh:
students = ["Alex", "Alexander", "Piper", "Molly", "Hannah"]
Tiếp theo, viết vòng lặp for lặp qua tất cả mục trong danh sách. Trong vòng lặp, dùng câu lệnh if kiểm tra từng tên có bắt đầu bằng "A" không:
for s in students:
if s.startswith("A") == True:
print s
Phương thức startswith() kiểm tra chuỗi có bắt đầu bằng ký tự cụ thể không. Mã kiểm tra xem mỗi tên trong danh sách "students" có bắt đầu bằng "A" không.
Thêm câu lệnh print thêm ở cuối mã cho biết chương trình đã chạy xong:
print "Above are all the students whose names begin with A."
Bây giờ bạn sẵn sàng chạy chương trình:
File "main.py", line 5
print s
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(s)?
Mã báo lỗi cú pháp.
Giải pháp
Thông tin hữu ích, Python đã đưa ra giải pháp ngay trong thông báo lỗi.
Điều này là do trong các phiên bản Python 3 trước, quên ngoặc đơn quanh câu lệnh print chỉ ném ra lỗi "invalid syntax". Thông báo này mơ hồ vì invalid syntax có thể do nhiều vấn đề. Do đó, Python giới thiệu thông báo "missing parenthesis" mới để giúp người dùng.
Để khắc phục, bao quanh tất cả giá trị bạn muốn in ra console bằng ngoặc đơn:
for s in students:
if s.startswith("A") == True:
print(s)
print("Above are all the students whose names begin with A.")
Bạn đã bao quanh "s" trên dòng print bằng ngoặc đơn. Bạn cũng bao quanh chuỗi cuối cùng in ra console bằng ngoặc đơn. Xem chương trình có hoạt động không:
Alex Alexander Above are all the students whose names begin with A.
Mã cho thấy có hai học sinh tên bắt đầu bằng A. Sau khi lặp xong danh sách, chương trình in thông báo mô tả đầu ra.
Kết luận
Lỗi Python SyntaxError: Missing parentheses in call to 'print' xảy ra khi bạn in giá trị ra console mà không bao quanh giá trị đó trong ngoặc đơn.
Để khắc phục, thêm ngoặc đơn quanh bất kỳ câu lệnh nào bạn muốn in ra console. Điều này là do trong Python 3, print không phải là câu lệnh. Nó là một hàm. Bạn phải gọi hàm bằng ngoặc đơn nếu muốn chạy nó.
Bây giờ bạn đã có kiến thức khắc phục lỗi Python phổ biến này như một pro!