Hướng dẫn dùng code indentation python

Contents

  • Statement
  • Indentation và Code block
    • Thế code block là gì ?

Trong ngôn ngữ lập trình bậc cao, đây là một sự diễn đạt có thể tạo ra các chỉ lệnh theo ngôn ngữ máy, khi chương trình được thông dịch hoặc biên dịch. Tóm gọi lại có thể hiểu nôm na là ‘một câu lệnh’.

Indentation và Code block

Thế code block là gì ?

Code block có thể hiểu là các hàm, các if statement, for loops, while loops,….

Các code block của Python không có kí tự thể hiện ‘begin’ của 1 code block hay ‘end’ của 1 code block, càng không sử dụng kí tự bracket ‘{‘ ‘}’ để đánh dấu bắt đầu kết thúc của 1 một code block như một vài ngôn ngữ lập trình khác như C, PHP,..

Ví dụ code block PHP:

1)
	{
		echo "Dung";
	}
?>

 
Vậy python sẽ thể hiện 1 code block như thế nào ? Python sử dụng kí tự ‘:’ và ‘khoảng trắng vào dòng (indentation)’. Một code block sẽ bắt đầu bằng một khoảng trắng thụt đầu dòng ‘indentation’ và kết thúc bằng 1 dòng không indentation hoặc indentation bằng với code block sub nếu có nhiều code block con như kiểu if lồng if.

Hướng dẫn dùng code indentation python

Ví dụ 1:

n = 2
if n > 1:
	print(“Lon hon”)
else:
	print(“Nho hon”)
	print(“Het code nhe”)

Ví dụ 2:

for i in range(1,11):
    print(i)
    if i == 5:
        break

Tất cả các statement nếu có cùng một độ dài khoảng trắng từ bên trái về bên phải, thì được xem là cùng 1 block code. Như bạn thấy ở ví dụ 1 thì “if” và “else” là cùng 1 code block.

Vậy làm sao để phân biệt khi nào dòng code statement nào đó không còn thuộc code block và kết thúc 1 code block lớn. Khi mà bạn thấy statement được về đầu dòng không có indentation hoặc trong 1 code block lớn thì code block sub thụt indent về bằng với indent của block lớn thì là đã kết thúc 1 code block.

Ví dụ 3:

var2 = “demo”
def test(var1):
    print(var1)
print(var2)

-> Lúc này ‘print(“var2”)’ đã nằm ngoài code block ‘def test’ do cùng độ dài indentation với code block ‘def test’.

Ví dụ 4:

from math import sqrt
n = input("Maximum Number? ")
n = int(n)+1

for a in range(1,n):
    for b in range(a,n):
        c_square = a**2 + b**2
        c = int(sqrt(c_square))
        if ((c_square - c**2) == 0):
            print(a, b, c)
    for c in range(a,n):
    
print(c)
print(“Finish”)

-> ‘ for c in range(a,n): ‘ , nằm ngoài code block của ‘ for b..’ nhưng vẫn nằm trong code block ‘for a …’ do cùng độ dài indentation ‘for b’ và nằm sau độ dài indentation với ‘for a …’  . Còn ‘print(“Finish”)’ thì nằm ngoài code block ‘for’.

Có thể cách diễn giải của mình còn kém về phần developer, mong các bạn thông cảm.

Hướng dẫn cách sử dụng Thụt lề trong Python, hay còn gọi là indentation trong python. Bạn sẽ học được cách sử dụng thụt lề trong python để xác định các khối (block) sử dụng trong các câu lệnh if hay for trong python sau bài học này.

Thụt lề trong Python là gì

Thụt lề trong Python, hay còn gọi là indentation trong python là các khoảng trắng đầu câu lệnh dùng để xác định các khối(block) được sử dụng trong các câu lệnh if hay for trong python.

Trong các câu lệnh if hay for, chúng ta có thể đặt một biểu thức điều kiện và thực thi nhiều câu lệnh khi biểu thức điều kiện đó True (đúng). Lúc này, khối (block) chính là nơi để đặt các câu lệnh này.

Hướng dẫn dùng code indentation python

Khác với các ngôn ngữ lập trình khác vốn dùng cặp dấu {} để xác định khối, vai trò của thụt lề trong python là vô cùng quan trọng bởi vì chúng ta chỉ có thể dùng thụt lề để xác định các khối (block) trong python mà thôi.

Việc dùng sai thụt lề trong python sẽ khiến các khối không được nhận dạng, khiến cho lỗi unexpected indent trong python xảy ra và làm gián đoạn chương trình.

Sử dụng thụt lề để xác định khối trong Python

Trong python, các câu lệnh chứa một hay nhiều câu lệnh con bên trong nó, chẳng hạn như lệnh if hoặc lệnh for, được gọi là câu lệnh ghép. Ngoài ra, các câu lệnh while và try, hay các định nghĩa hàm và định nghĩa lớp cũng là các câu lệnh ghép.

Trong câu lệnh ghép, chúng ta sử dụng khối để xác định cần thực thi các câu lệnh con bắt đầu từ đâu và kết thúc ở chỗ nào. Và chúng ta sử dụng thụt lề để xác định khối này trong Python.

Ví dụ về khối trong câu lệnh if python:

if biểu thức điều kiện:
    Câu lệnh con 1 trong khối
    Câu lệnh con 2 trong khối

Các câu lệnh được thụt lề tại cùng một vị trí thì được coi là cùng một khối. Và nếu lượng thụt lề là khác nhau, chúng được coi là ở các khối riêng biệt.
Do đó, nếu chúng ta ghi câu lệnh trong một khối mà có lượng thụt lề khác với các câu lệnh còn lại trong khối đó, lỗi Unexpected indent sẽ bị xảy ra. Ví dụ

if biểu thức điều kiện: 
Câu lệnh con 1 trong khối
Câu lệnh con 2 trong khối
Câu lệnh con 3 trong khối

Trong trường hợp bạn muốn viết nhiều câu lệnh if hơn trong khối câu lệnh if, hãy viết chúng bằng cách thụt lề sâu hơn như sau:

if biểu thức điều kiện 1:
    Câu lệnh con 1 trong khối if1
    Câu lệnh con 2 trong khối if1
    if biểu thức điều kiện 2:
        Câu lệnh con 1 trong khối if2
        Câu lệnh con 2 trong khối if2
    Câu lệnh con 4 trong khối if1

Ví dụ chúng ta dử dụng thụt lề để xác định khối trong lệnh if sau đây:

num = 10
if num < 100:
print(num)
if (num % 2) == 0:
print("Số chẵn")
hieu = num - 2
print("hiệu số đã cho với 2 bằng", hieu)

Lỗi Unexpected indent trong python

Lỗi Unexpected indent trong python là lỗi do thụt lề sai, được coi như là một dạng lỗi cú pháp trong python.
Ví dụ trong khối sau, câu lệnh print ở dòng 5 có vị trí thụt lề khác với các câu lệnh khác trong cùng khối if, khiến lỗi xảy ra:

num = 10
if num < 100:
print(num)
print(num + 1)
print(num + 2 )

Lõi Unexpected indent trả về:

Hướng dẫn dùng code indentation python

Khi gặp phải lỗi này, bạn hãy coi lại xem các câu lệnh nằm chung một khối đã được thụt lề tại cùng một vị hay chưa và sửa lại nhé.

Ví dụ, chúng ta sửa lại vị trí thụt lề trong chương trình trên như sau:

num = 10
if num < 100:
print(num)
print(num + 1)
print(num + 2 )

Kết quả, lỗi Unexpected indent đã được sửa và kết quả in ra màn hình như sau:

10
11
12

Thụt lề bao nhiêu là chuẩn trong python

Mặc dù chúng ta dùng tab hoặc phím cách để thụt lề trong python, nhưng không có một quy định nào giới hạn số lượng thụt lề trong python cả. Ví dụ bạn có thể dùng 2 dấu cách, hoặc 4 dấu cách để thụt lề trong python đều được cả. Nói cách khác, không có khái niệm thụt lề bao nhiêu là chuẩn trong python.

Nếu bạn cảm thấy phân vân nên chọn bao nhiêu thụt lề, hãy tham khảo thêm về thụt lề tại website Python Doccuments sau đây:

  • Style Guide for Python Code

Tuy nhiên về thông thường, các lập trình viên sẽ dùng 4 lần phím cách để thụt lề trong python, nên chúng ta cũng nên học họ và sử dụng 4 phím cách để thụt lề trong python nhé.

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn về cách thụt lề trong Python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

Viết bởi Kiyoshi. Đã đăng ký bản quyền tác giả tại <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" rel="license noopener" target="_blank" href="https://creativecommons.org/licenses/by-nc-nd/4.0/">Creativecommons</a>&nbsp;và <a title="Bạn được tự do chia sẻ bài viết nhưng phải để lại đường link bài viết từ laptrinhcanban.com. Bạn không được sử dụng tài liệu cho mục đích thương mại. Không được phép chỉnh sửa nội dung được phát hành trên website của chúng tôi" style="color:#fff;background-color:silver" target="_blank" rel="noopener" href="https://www.dmca.com/Protection/Status.aspx?ID=1631afcd-7c4a-467d-8016-402c5073e5cd" class="dmca-badge">DMCA</a><script src="https://images.dmca.com/Badges/DMCABadgeHelper.min.js">

Bài viết liên quan

Hãy chia sẻ và cùng lan tỏa kiến thức lập trình Nhật Bản tại Việt Nam!

HOME>> >>

Profile
Hướng dẫn dùng code indentation python

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.