Thụt lề và lỗi khi thụt lề trong Python


Ngày tạo : 2023-04-04 22:24:35

Nguyễn Đức Tình


Thế thụt lề trong Python rất quan trọng. Thụt lề không đúng, trình biên dịch sẽ báo lỗi cú pháp (SyntaxError/ IndentationError).

Mỗi câu lệnh Python thường nằm trên một dòng. Các lệnh ngang hàng nhau thì thụt lề bằng nhau. Dòng lệnh đầu tiên của chương trình không được phép thụt lề dù chỉ một dấu cách.

Ví dụ đúng:

a = 10
print(a)

Ví dụ sai do thụt lề bất ngờ:

a = 10
 print(a)

Các khối lệnh bắt đầu bằng dấu ':' và thụt lề đầu dòng bằng nhau giữa các lệnh trong khối. Trong khối lệnh phải tồn tại ít nhất một câu lệnh.

Ví dụ :

a, b = int(input(‘a, b = ’).split())
if a != b :
   print(a)
   print(b)

Hai câu lệnh print() nằm trong cùng một khối lệnh vì thế phải thụt lề bằng nhau và thụt lề nhiều hơn so với câu lệnh if chứa dấu ‘:’.

Ví dụ sai :

a, b = int(input(‘a, b = ’).split())
if a != b :
   print(a)
  print(b)

Nếu lệnh print(b) không thuộc khối lệnh thì nó phải thụt lề bằng câu lệnh if. Nếu nằm trong khối lệnh, nó phải thụt lề bằng lệnh print(a).

Ví dụ sai do không thụt lề sau dấu ‘:’

a, b = int(input(‘a, b = ’).split())
if a != b :
print(a)
print(b)

Ví dụ sai do thụt lề bất ngờ khi không có dấu ‘:’:

 a = 10
print(a)

Hoặc :

a = 10
 print(a)

Các lệnh trong cùng một khối lệnh cũng có thể cùng nằm trên một dòng và được ngăn cách nhau bởi dấu ‘;’.

Ví dụ :

a, b = int(input(‘a, b = ’).split())
if a != b :  print(a) ;  print(b)

Hoặc :

a, b = int(input(‘a, b = ’).split())
if a != b :
   print(a) ;    print(b)

Lệnh print(a)print(b) cùng nằm trong khối lệnh sau dấu ‘:’.

Ví dụ :

a, b = int(input(‘a, b = ’).split())
if a != b :  print(a) 
print(b)

Trường hợp này chỉ có lệnh print(a) thuộc khối lệnh sau dấu ‘:’ . Lệnh print(b) không thuộc khối lệnh trên.

Ví dụ sai :

a, b = int(input(‘a, b = ’).split())
if a!= b :  print(a) 
  print(b)

Lệnh print(b) đã thụt lề bất ngờ.

Cảnh báo : Việc viết nhiều câu lệnh trên một dòng sẽ làm tăng thời gian biên dịch chương trình đồng thời làm chương trình kém tường minh.

Lưu ý: Dấu ‘:’ để bắt đầu một khối lệnh chỉ có ở những câu lệnh mà từ khóa: if; else; elif; for; while; try; def; class; except; finally nằm ở ngay đầu của câu lệnh đó.

Ví dụ 1:

t = 0
for i in range(10):
   t = t + i
print(t)

Ví dụ 2:

x, y = [input(‘nhap a, b : ’) for i in range(10)]