Lỗi IndentationError: unindent does not match any outer indentation level trong Python

Anh ơi sau đoạn mã dưới đây em vieets đúng như trên video python của anh laptrinh io mà sao máy lại báo lỗi sai thế

 #!/usr/local/bin/python3

def tong(ds):
	tong = 0
    for i in ds:
        tong += i
    return tong 

ket_qua = tong([1,2,3])
print("Ket qua la " + str(ket_qua))

máy em báo lỗi là :

   File ".\test1.py", line 5
     for i in ds:
                   ^
IndentationError: unindent does not match any outer indentation level

IndentationError - chú ý độ thụt dòng khi gõ dòng code mới :

Python không cung cấp các dấu ngoặc ôm ({}) để chỉ các khối code cho định nghĩa lớp hoặc hàm hoặc điều khiển luồng. Các khối code được nhận biết bởi độ thụt dòng code (indentation) trong Python và đây là điều bắt buộc.

Số khoảng trống trong độ thụt dòng là biến đổi, nhưng tất cả các lệnh bên trong khối phải được thụt cùng một số lượng khoảng trống như nhau

1 Like

em không bik sao nó báo lỗi hoài

lùi dòng tong = 0 lại = với for..

dạ em lùi rồi nó vẫn v ạ

def tong(ds):
    tong = 0
    for i in ds:
        tong +=i
    return tong

ketqua = tong([1,2,3])
print(ketqua)

như này đâu có sao
dùng sublime thì cài các add-on vào tự save code, check pep 8 các kiểu
chả nhớ cái nào nữa, ví dụ tạm https://packagecontrol.io/packages/auto-save

em đã làm giống anh mà sao máy cứ báo lỗi ở dòng for i in ds: nó cứ báo lỗi ở chỗ dấu :

bạn xóa code, gõ lại thử xem :slight_smile:

nó vẫn v anh ơi :(((

Biến tong chỉ lùi 1 tab thôi.
Mà tên hàm là tong thì đặt tên biến là tong làm gì -_-

Sửa 1 tí: bạn thống nhất cách indent trong code Python nhé. Dùng 4 space hoặc dùng 1 tab.
Code kia của bạn vừa dùng tab vừa dùng 4-space. Mình có bôi đen từng kí tự căn dòng của bạn thì thấy.
Chuẩn PEP 8 thì dùng 4 space (hình như thế, hồi mới code Python mình bị báo lỗi suốt).

2 Likes

à em làm được rồi thanks anh thì ra là vậy

mà anh ơi làm sao để thụt đầu dòng đúng ạ

Nhìn vào góc phải của sublime text
Click vào đó, chọn Indent using spacesTab size: 4
Đó là cách để thống nhất cách indent.

Muốn chuyển đổi tab thành space thì chọn Convert indentation to spaces

Còn để indent đúng thì phải nắm được mình code cái gì, code block (- khối code) như thế nào, các lệnh nằm trong hàm nào, if/for/while nào…
Phải code nhiều và phải hiểu code mình viết.

1 Like

mỗi hàm có 1 kiểu thụt đầu dòng riêng hả anh ???

Bạn không hiểu về indent trong python rồi…
Indent phụ thuộc vào hàm, chứ không phải là mỗi hàm có kiểu indent riêng…
Ví dụ như:

you = 1
def fun():
    print "love me"
    if you == 1:
        print "once"
    else:
        print "sometimes"

fun()

print "love me", if you == 1 và cái else kia là cùng lùi vào 1 tab so với def fun(); bên trong if và bên trong else, các hàm print "once"print "sometimes" cùng lùi vào 1 tab so với if và else, nhưng là lùi vào 2 tab so với def fun()

2 Likes

à em hiểu rồi vậy còn cái nữa là có vài dòng code em thấy người ta hay viết liên tục mà tự nhiên lại cách 1 dòng rồi mới viết tiếp giống như dòng cuối cùng của đoạn code trên sao fun() lại phải cách dòng ạ

Cách dòng cho vui thôi =))
Đùa đấy, nếu thấy khó nhìn quá thì cách thêm 1 dòng, chẳng sao cả.
Lưu ý chuẩn PEP 8: Trước và sau 1 def (hàm) phải có 2 dấu xuống dòng.

p/s: bạn viết câu cú chả có dấu phẩy dấu chấm gì cả -_-

1 Like

ủa sao cái đoạn code trên của em cái dòng return tổng em thụt sai thì chạy code vẫn được mà kết quả ra là 1 còn em sửa lại đúng thì ms là 6 , vậy thụt đầu dòng sai cũng có ảnh hưởng tới kết quả hả anh

Python quan trọng nhất là cái indent mà -_-
Mà lần sau đừng đặt tên biến trùng tên hàm.
Nói chung là code bạn sai vì nhiều cái, chứ không phải chỉ vì indent sai.

2 Likes

dạ em mới học code lần đầu nên vẫn chưa quen

em thấy trên hướng dẫn ngta viết sao thì em viết như v thui

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?