01/10/2018, 16:47

Lỗi expected an intended block

while True:
	for i in ["/","-","|","\","|"]:
	print "%s
" % i.

em mới học em học anh đạt code đoạn này y chang mà khi chạy nó báo lỗi là expected an intended block và nó báo sai chỗ chữ print . các anh chỉ tại sao em sai ạ

Trương Tấn Phát viết 18:53 ngày 01/10/2018

Thêm kí tự tab (phím TAB) vào trước print.

Minh Trí viết 19:00 ngày 01/10/2018

cho mình hỏi tại sao phải thêm tab vậy ạ

Trương Tấn Phát viết 18:55 ngày 01/10/2018

Mặc dù chưa từng lập trình python nhưng nhìn qua những ví dụ trên mạng, mình biết các kí tự Tab (\t) và Enter(\r \n) trong python rất quan trọng, không như các ngôn ngữ khác.

Những đoạn mã có cùng kí tự Tab ở đầu và liên tiếp nhau sẽ nằm cùng một phạm vi (scope), tức là cùng nằm trong dấu { } nếu xét ở ngôn ngữ khác.
Python:

if (a==b)
    print("Ok")
    print("@@")

Sẽ tương đương với

if (a==b){
    print("Ok");
    print("@@"); // nằm trong if
}

Nhưng nếu:

if (a==b)
    print("Ok")
print("@@")

Sẽ tương đương với

if (a==b){
    print("Ok");
}
print("@@"); // nằm ngoài if

Chỉ thêm/bớt kí tự Tab trong python sẽ làm mã thay đổi rất nhiều.

Những biến khởi tạo trong phạm vi đó sẽ không dùng được bên ngoài.
Đoạn mã của bạn thiếu Tab nên nó hiểu là print bên ngoài for nên biến i không dùng được.

Đối với kí tự Enter cũng tương tự, nhưng nó mang ý nghĩa kết thúc hàm khi có 2 kí tự Enter liên tiếp.

Minh Trí viết 18:59 ngày 01/10/2018

cám ơn bạn nhé mình hiểu rồi

Bài liên quan
0