Python gỡ lỗi f-string

Python nổi tiếng vì cú pháp đơn giản của nó. Tuy nhiên, khi bạn đang học Python lần đầu tiên hoặc khi bạn đến với Python với nền tảng vững chắc ở ngôn ngữ lập trình khác, bạn có thể tìm hiểu những thứ mà Python không cho phép. Nếu bạn nhận được lỗi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 khi chạy mã của mình thì bài viết này sẽ giúp bạn giải quyết vấn đề này. Xuyên suốt hướng dẫn, bạn sẽ thấy các ví dụ điển hình về lỗi cú pháp trong Python và học cách giải quyết chúng

Đến cuối hướng dẫn này, bạn có thể

  • Xoá cú pháp không hợp lệ trong Python
  • Hiểu được truy nguyên của
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    2
  • Sửa và phòng tránh cú pháp

Cú pháp không hợp lệ trong Python

Khi bạn chạy mã, đầu tiên trình biên dịch sẽ phân tích (phân tích cú pháp) để chuyển đổi nó thành mã byte Python - đoạn mã sau đó được chạy. Trình biên dịch sẽ tìm các lỗi về cú pháp trong bước đầu tiên trong quá trình xử lý chương trình, hay còn gọi là bước phân tích (giai đoạn phân tích cú pháp). Nếu trình biên dịch không thể phân tích cú pháp đoạn mã thành công, thì có nghĩa là bạn đã sử dụng sai cú pháp ở đâu đó trong mã của bạn. Trình biên dịch sẽ cố gắng chỉ để bạn tìm thấy vị trí mà lỗi đó xảy ra

Khi bạn tiếp tục Python lần đầu tiên, bạn có thể nản lòng khi gặp lỗi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2. Python sẽ giúp bạn xác định vị trí mà bạn sử dụng sai cú pháp nhưng truy ngược lại nó đưa ra có thể hơi khó hiểu. This time, code it cursor to complete the reason

Ghi chú. Nếu mã đúng cú pháp, bạn có thể nhận được các ngoại lệ khác được nâng lên mà không phải là

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2. Để tìm hiểu thêm về các ngoại lệ khác và cách xử lý chúng, hãy xem tại đây

Bạn không thể xử lý lỗi cú pháp như các ngoại lệ khác. Ngoài ra, nếu bạn cố gắng đưa đoạn mã sai cú pháp vào trong một khối

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
6, bạn vẫn sẽ biên dịch nâng cao lỗi
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2

>>> names = ['pam', 'jim', 'michael'] >>> if 'jim' in names: ... print('jim found') ... break ... File "", line 3 SyntaxError: 'break' outside loop >>> if 'jim' in names: ... print('jim found') ... continue ... File "", line 3 SyntaxError: 'continue' not properly in loop 2 Ngoại lệ và Traceback

Khi biên dịch gặp phải lỗi cú pháp, Python sẽ nâng cao ngoại lệ

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
9 và cung cấp truy ngược lại một số thông tin hữu ích để giúp bạn gỡ lỗi. Đây là đoạn mã chứa lỗi cú pháp

________số 8

You could see a invalid cú pháp in dict line 4. Mục thứ hai,

>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
0, thiếu sót. Nếu bạn chạy đoạn mã, bạn sẽ bị truy ngược lại sau

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
0

Chú ý rằng truy nguyên sẽ chỉ ra lỗi ở dòng 5 chứ không phải 4. Trình biên dịch Python đã cố định vị trí lỗi. Tuy nhiên, nó chỉ có thể trỏ tới nơi nó bắt đầu bị lỗi. Khi nhận được dấu vết và dấu vết có vẻ có ý nghĩa, bạn cần nhìn vào loại đoạn mã để xác định vị trí sai

Trong ví dụ bên trên, không có đề cập đến việc thiếu dấu phẩy mà phụ thuộc vào việc cái gì theo sau nó. Ví dụ, công việc không có dấu phẩy sau

>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
1 ở dòng 5 chẳng ảnh hưởng gì. Nhưng khi một biên dịch bắt gặp điều gì đó không ổn, nó chỉ có thể trỏ ngay tới dòng mã đầu tiên mà nó không hiểu

Ghi chú. Hướng dẫn này giả định rằng bạn đã có kiến ​​thức cơ bản về truy nguyên trong Python. Để tìm hiểu thêm về truy nguyên và cách đọc hiểu chúng, hãy đọc bài viết này

Có một vài thành phần của

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 có thể giúp bạn xác định vị trí lỗi

  • File name - file mà lỗi cú pháp được tìm thấy
  • Số dòng - lỗi dòng nội dung
  • Dấu mũ - vị trí chính xác mà lỗi bị bắt gặp
  • Thông báo lỗi - xuất hiện ngay sau kiểu lỗi
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    2, nội dung lỗi giúp bạn xác định vấn đề

Trong ví dụ trên, tên tệp là

>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
4, số dòng là
>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
5 và con trỏ dấu mũ trỏ vào nháy đơn của phím
>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
6. Traceback
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 không thể chỉ đưa ra vấn đề thực sự nhưng nó sẽ chỉ tới vị trí ban đầu mà biên dịch không hiểu được

Có hai ngoại lệ khác, bạn có thể thấy Python tăng lên. Nó tương tự như

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 nhưng bên dưới những cái tên khác

  1. >>> pass = True
      File "", line 1
        pass = True
             ^
    SyntaxError: invalid syntax
    
    >>> def pass():
      File "", line 1
        def pass():
               ^
    SyntaxError: invalid syntax
    
    9
  2. >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    00

Những ngoại lệ này đều kế thừa từ

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 nhưng chúng là những trường hợp đặc biệt liên quan đến thụt đầu dòng (thụt đầu dòng).
>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
9 được nâng lên khi các mức thụt lề không khớp nhau. Còn lại
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
00 xuất hiện khi mã của bạn sử dụng cả tab và khoảng trắng trong cùng một tệp. Chúng ta sẽ xem xét kỹ hơn về những ngoại lệ này trong phần sau

Các vấn đề về cú pháp thường gặp

Khi chúng ta bắt gặp

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 lần đầu tiên, việc biết lý do xảy ra lỗi và cách khắc phục nó thực sự hữu ích. Trong các phần tiếp theo, chúng ta sẽ thấy một số lý do khiến biến phổ biến mà
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 có thể được nâng lên và cách bạn có thể sửa chúng

Lạm dụng toán tử gán (=)

Có vài trường hợp trong Python mà bạn không thể gán các đối tượng ví dụ như chuỗi và lời gọi hàm

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
6

Ví dụ ban đầu cố gắng gán giá trị

>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
5 cho lời kêu gọi
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
07. Tin nhắn
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 rất hữu ích trong trường hợp này. Nó nói rằng bạn không thể gán giá trị cho một lời gọi hàm

Ví dụ thứ hai và thứ ba cố gắng tìm kiếm một chuỗi với một số nguyên cho các chuỗi. Quy tắc tương đồng đúng với các chuỗi giá trị khác nhau. Một lần nữa, truy nguyên chỉ xảy ra sự cố khi bạn cố gắng gán giá trị cho một chuỗi

Ghi chú. Các ví dụ bên trên mã thiếu dòng được lặp lại và dấu mũ (^) chỉ đưa ra vấn đề trong quá trình truy nguyên. Ngoại lệ và truy nguyên mà bạn nhìn thấy sẽ khác khi bạn đang ở trong một phiên bản REPL vì vậy việc bạn chạy mã từ một tệp. Nếu mã này nằm trong tệp, bạn sẽ nhận được dòng mã lặp và dấu phụ

Có thể là bạn sẽ không bao giờ có ý định gán một giá trị cho một chuỗi hoặc lời gọi hàm. Các lỗi xảy ra chỉ khi bạn vô tình quên mất một dấu "=" khi bạn muốn thực hiện phép so sánh

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
0

Nhiều trường hợp, khi Python nói rằng bạn đang thực sự được phép gán với một đối tượng mà không thể được gán, trước tiên bạn nên kiểm tra chắc chắn rằng xem câu lệnh là một lệnh gán hay là một biểu thức Boolean. Bạn cũng có thể gặp vấn đề này khi bạn đang cố gắng gán giá trị cho các từ khóa. Chúng ta sẽ đề cập đến trường hợp này trong mục sau

Viết sai chính tả, thiếu hoặc sử dụng sai từ khóa Python

Các từ khóa trong Python là một tập hợp các từ được bảo vệ có ý nghĩa đặc biệt trong Python. Đây là những từ khóa bạn không thể sử dụng như định danh, biến hoặc tên hàm. Chúng là một phần của ngôn ngữ và chỉ có thể sử dụng trong ngữ cảnh mà Python cho phép

Những trường hợp mà bạn có thể nhầm lẫn giữa việc sử dụng các từ khóa

  1. Sai chính tả
  2. thiếu từ khóa
  3. Sử dụng sai từ khóa

Nếu bạn viết sai mô tả chính xác, bạn sẽ thấy lỗi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2. Ví dụ đầy đủ là điều xảy ra khi bạn viết sai từ khóa
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
20

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
3

Tin nhắn là

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
21 - không quá hữu ích. Truy ngược con trỏ tới vị trí đầu tiên mà Python phát hiện có cái gì sai. Để sửa các kiểu lỗi như thế này, hãy đảm bảo rằng một từ khóa đều đúng

Một vấn đề phổ biến khác chính là việc bạn quên từ khóa

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
5

Một lần nữa, thông báo lại không hữu ích nhưng truy ngược lại con trỏ tới đúng vị trí. If you di chuyển dấu ấn ngược lại, bạn sẽ có từ khóa

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
22 bị thiếu trong cú pháp của vòng lặp
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
20

Bạn cũng có thể sử dụng sai từ khóa được bảo vệ. Hãy nhớ rằng, các từ khóa chỉ được sử dụng trong một số trường hợp nhất định. Nếu bạn sử dụng sai chúng, bạn cũng sẽ nhận ra lỗi cú pháp sai. Một ví dụ điển hình là việc sử dụng

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
24 hoặc
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
25 bên ngoài vòng lặp. Điều này có thể dễ dàng xảy ra khi bạn chuyển một đoạn mã ra khỏi một vòng lặp

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop

Ở đây, Python đã làm tốt công việc thông báo lỗi chính xác cho bạn biết. Nhắn "

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
26" và "______327" giúp bạn biết việc mình cần làm

Một ví dụ khác là nếu bạn cố gắng gán một từ khóa cho một biến hoặc sử dụng từ khóa để khai báo hàm

>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax

Nếu bạn cố gắn một giá trị cho

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
28 hoặc khi bạn định nghĩa một hàm với tên
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
28, bạn sẽ gặp lỗi
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 và thấy thông báo
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
001 một lần nữa

Việc giải quyết lỗi cú pháp này có thể khó hơn một chút do đoạn mã nhìn bên ngoài thì khá ổn. Nếu mã có vẻ ổn mà bạn vẫn gặp lỗi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2, thì bạn nên cân nhắc kiểm tra tên biến và hàm mà bạn muốn sử dụng

Danh sách các từ khóa được bảo vệ sẽ thay đổi theo phiên bản của Python. Ví dụ trong Python 3. 6 bạn có thể sử dụng

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
003 làm tên biến hoặc tên hàm nhưng trong Python 3. 7 thì nó lại nằm trong danh sách từ khóa. Bây giờ, nếu bạn thử sử dụng
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
003 để làm biến tên hoặc hàm tên, thì lỗi
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 sẽ tăng lên nếu bạn sử dụng Python 3. 7 hoặc cao hơn

Một ví dụ khác của vấn đề này chính là

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
006 - có sự khác biệt giữa Python 2 và 3

Phiên bảnKiểu của
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
006Nhận giá trịPython 2từ khóakhôngPython 3hàm tích hợpcó

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
006 là một từ khóa trong Python 2 nên bạn không thể gán giá trị cho nó. Tuy nhiên, trong Python 3, nó là một hàm có sẵn có thể được gán các giá trị

You can run code after to see a keyword list in the Python version which you used

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
0

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
009 là một hàm hữu ích dùng để kiểm tra xem một từ có phải là từ khóa hay không

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2

Thiếu dấu ngoặc đơn, dấu ngoặc kép và dấu ngoặc kép

Thông thường, nguyên nhân gây ra lỗi cú pháp trong Python là thiếu dấu đơn, trích dẫn quảng cáo hoặc dấu nháy đơn/kép đóng. Những nỗi thương xót này khó phát hiện ra ở những dòng dài mà có nhiều dấu trích đơn lồng nhau hoặc ở những khối mã nhiều dòng. Bạn có thể phát hiện ra điều này nhờ sự hỗ trợ của truy nguyên

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
00

Tại đây, chỉ truy xuất lại vị trí mã không hợp lệ là ở vị trí

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
010. Để sửa lỗi này, bạn có thể sử dụng hai cách

  1. Thêm ký tự thoát
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    011 trước dấu nháy đơn thứ hai (
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    012)
  2. Bao quanh chuỗi với cặp dấu nháy kép (______1013)

Một lỗi thường gặp khác là quên chuỗi đóng

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
01

Lần này, dầu phụ trong dấu vết con trỏ chính tới mã vị trí có vấn đề. Thông báo

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2, "
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
015", đã có thể và hữu ích hơn một chút trong việc xác định vấn đề. Điều này cũng có nghĩa là trình biên dịch Python đã đi tới tận cùng của dòng mã đó. To fix this error, please close string with the flash that you used to open string. Trong trường hợp này là dấu nháy kép
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
016

Việc thiếu dấu nháy trong các câu lệnh thuộc chuỗi f có thể dẫn đến cú pháp lỗi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
02

Tại đây, tham chiếu tới dict

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
017 bên trong chuỗi f đã bị thiếu dấu nháy kép đóng ở phím tham chiếu. Truy nguyên nhận được là

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
03

Python xác định vấn đề và cho bạn biết vấn đề nằm trong f-string. Tin nhắn "unterminated string" cũng chỉ ra vấn đề là gì. Dấu mũ trong trường hợp này chỉ con trỏ tới vị trí bắt đầu của f-string

Việc làm này có thể không có ý nghĩa khi mà dấu mũ hướng tới khu vực của f-string nhưng nó lại không thu được vị trí mà chúng ta cần quan tâm. There are no end string in f-string. You only work going to it. Để khắc phục lỗi này, hãy đảm bảo rằng tất cả các dấu nháy trong chuỗi f và trích dẫn phải đầy đủ

Xảy ra lỗi tương tự khi thiếu đơn đặt hàng và khung. Ví dụ, nếu bạn quên sử dụng dấu ngoặc nhọn để đóng một danh sách, Python sẽ phát hiện và trỏ tới đó. Tuy nhiên, không có nhiều sự khác biệt trong các trường hợp này. Trong ví dụ đầu tiên, chúng tôi đã quên đóng khung khung

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
04

Khi chạy đoạn code này, bạn sẽ được nhắc nhở rằng có lỗi khi gọi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
018

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
05

Điều xảy ra ở đây chính là việc Python nghĩ là danh sách bao gồm ba phần tử.

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
019,
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
020 và
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
021. Python sử dụng khoảng trắng (khoảng trắng) để nhóm các thứ hạng lại với nhau và bởi vì không có dấu hài và trích dẫn ngăn chặn
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
022 với
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
023, Python ranh giới của chúng lại thành phần tử thứ ba của danh sách

Một biến khác có thể là thêm một dấu phẩy sau phần tử cuối cùng của danh sách trong khi vẫn quên dấu đóng khung

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
06

Bây giờ bạn đã nhận được một dấu vết khác

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
07

Trong ví dụ trước đó,

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
022 và
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
023 đã được nhóm lại thành một phần tử nhưng ở đây bạn thấy hài hước sẽ ngăn cách chúng. Bây giờ công việc được gọi là
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
023 được thêm vào như là phần tử thứ tư của danh sách và Python chạy tới tệp cuối cùng mà không có dấu ngoặc nhọn đóng. Traceback nói cho bạn biết rằng Python đã đọc hết file (EOF) nhưng nó vẫn mong đợi một cái gì đó khác

Trong ví dụ này, Python mong đợi một dấu ngoặc nhọn đóng

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
027 nhưng dòng được nhắc và dấu phụ không thực sự hữu ích. Việc thiếu dấu ngoặc đơn hoặc dấu ngoặc đơn khiến Python rất khó nhận ra. Đôi khi điều duy nhất bạn có thể làm là bắt đầu từ dấu mũ và quay ngược lại cho đến khi bạn phát hiện ra những điều còn sót lại

Từ điển sai Cú pháp

Trước đó bạn đã thấy rằng bạn có thể gặp lỗi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 nếu bạn quên khen ngợi ở một phần tử chính tả. Một dạng khác của lỗi cú pháp với dict là việc sử dụng dấu "=" để ngăn chặn các phím và giá trị thay vì ". "

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
08

Một lần nữa thông báo lỗi không hữu ích. Tuy nhiên, nhắc lại dòng và dấu lại rất hữu ích. Chúng ta trỏ tới đúng ký tự có vấn đề

To fix this error, you can instead of the "=" with the dấu ". ". You can also convert to use

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
029

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
09

Bạn có thể sử dụng

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
029 để khai báo chính tả nếu cú ​​pháp này hữu ích hơn

Sử dụng thụt lề sai

Có hai lớp con của

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 dành riêng cho các vấn đề về thụt đầu dòng

  1. Lỗi thụt đầu dòng
  2. TabLỗi

Trong khi các ngôn ngữ lập trình khác nhau sử dụng trích đoạn để khai báo một mã khối, Python lại sử dụng

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
032 (khoảng trắng). Python sẽ tăng lên lỗi
>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
9 nếu có một dòng mã trong khối có khoảng trắng sai số

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
60

Điều này có thể hơi khó để phát hiện nhưng dòng thứ 5 chỉ được nhận có hai khoảng trắng. May thay Python lại dễ dàng phát hiện và nói cho bạn biết vấn đề là gì

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
61

Mặc dù truy ngược lại trông khá giống truy nguyên của

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2, nhưng thực tế nó lại là một
>>> pass = True
  File "", line 1
    pass = True
         ^
SyntaxError: invalid syntax

>>> def pass():
  File "", line 1
    def pass():
           ^
SyntaxError: invalid syntax
9. Thông báo lỗi rất hữu ích. Nó nói cho bạn biết độ thụt đầu dòng của mã dòng không khớp với các độ thụt lề khác. Bạn có thể sửa lỗi này một cách nhanh chóng và nhanh chóng bằng cách đảm bảo rằng đoạn mã được thụt lùi sao cho thụt lề đúng mức mong muốn

Một loại

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 khác là
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
00 - lỗi nói cho bạn biết rằng có một dòng có sử dụng tab hoặc khoảng trắng cho mục đích thụt lề trong khi cái còn lại được sử dụng ở một nơi khác trong tệp. Điều này có thể bị loại bỏ khi Python chỉ ra lỗi mà bạn biết

Nếu kích thước tab trùng với khoảng trắng trong mỗi mực thụt lề, thì mọi thứ thực sự có vẻ không có gì lạ. Tuy nhiên, nếu một dòng được thụt lề bằng dấu cách và một dòng khác được thụt lề bằng tab thì Python sẽ chỉ cho bạn thấy vấn đề

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
62

Tại đây, dòng 5 được thụt vào với một ký tự tab bao gồm 4 dấu cách. Khối mã này có thể trông hoàn hảo hoặc hoàn toàn sai, tùy vào thiết lập hệ thống của bạn

Tuy nhiên, Python sẽ giải quyết vấn đề này ngay lập tức. Nhưng trước khi bạn chạy đoạn mã để xem Python sẽ nói cho bạn biết cái gì sai, hãy xem ví dụ sau

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
63

Chú ý là sự khác biệt trong việc hiển thị giữa ba ví dụ trên. Ngoại trừ dòng 5 sử dụng một tab thì các mã dòng khác sử dụng 4 dấu cách cho một khoảng thụt lề. Độ rộng của tab thay đổi dựa trên cài đặt độ rộng của tab

  • Nếu chiều rộng tab là 4 thì lệnh
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    006 nhìn có vẻ ngoài vòng quay
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    20. Console will in "done" at the end of the loop
  • Nếu chiều rộng tab là 8, tiêu chuẩn của rất nhiều hệ thống, thì lệnh
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    006 có vẻ như nằm trong vòng lặp
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    20. Console will in "done" after each number
  • Nếu chiều rộng tab là 3 thì lệnh
    >>> names = ['pam', 'jim', 'michael']
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     break
    ...
      File "", line 3
    SyntaxError: 'break' outside loop
    
    >>> if 'jim' in names:
    ...     print('jim found')
    ...     continue
    ...
      File "", line 3
    SyntaxError: 'continue' not properly in loop
    
    006 nhìn có vẻ không thuộc về đâu. Trong trường hợp này, dòng 5 không khớp với bất kỳ mức thụt đầu dòng nào

Khi bạn chạy đoạn mã, bạn sẽ nhận được lỗi và theo dõi lại sau

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
64

Chú ý rằng ở đây ta nhận được

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
00 thay vì
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2. Python chỉ ra dòng có vấn đề và cung cấp cho bạn một thông báo hữu ích. Nó nói với bạn rằng tab và không gian được sử dụng lộn xộn để thụt lề trong cùng một tệp

Giải pháp cho vấn đề này là sử dụng hoặc là tab hoặc là dấu cách để thụt lề, chứ không phải là cả hai

Định nghĩa và gọi hàm

Bạn có thể gặp lỗi cú pháp khi bạn định nghĩa hoặc gọi hàm. Ví dụ, bạn sẽ thấy SyntaxError nếu bạn sử dụng ";" . " at the end of the function

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
65

Traceback ở đây rất hữu ích với việc trỏ chuột tới đúng ký tự gây ra lỗi. Bạn có thể xóa lỗi xổ số này bằng cách chuyển sang sử dụng ". "

Hơn nữa, đối số từ khóa trong định nghĩa hàm và gọi hàm cũng cần phải đúng vị trí. Đối số từ khóa luôn đến sau các đối số vị trí

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
66

Ở đây, một lần nữa, tin nhắn lại lỗi rất hữu ích khi nói chỉ rõ cho bạn thấy vị trí lỗi

Thay đổi phiên bản Python

Thi thoảng, mã chạy tốt ở một phiên bản Python nhưng lại bị lỗi ở các phiên bản mới hơn. Điều này là do những thay đổi trong cú pháp ngôn ngữ. Ví dụ điển hình chính là lệnh

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
006 khi nó chuyển mình từ một từ khóa trong Python 2 thành một hàm dựng sẵn trong Python 3

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
67

Đây là một trong những ví dụ mà thông báo lỗi cho

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 được đưa ra có ý nghĩa nhất. Không chỉ nói cho bạn biết là bạn đang thiếu các dấu ngoặc đơn mà còn đưa ra giải pháp cho bạn

Một vấn đề khác bạn có thể gặp chính là khi bạn đọc hoặc tìm hiểu về các cú pháp hợp lệ trong phiên bản mới hơn nhưng lại không hợp lệ trong phiên bản mà bạn đang sử dụng. Một ví dụ của công việc này chính là cú pháp chuỗi f - nó chỉ tồn tại trong các phiên bản từ 3. 7 trở về sau

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
68

In the Python version before 3. 6, biên dịch biên dịch không hiểu gì về chuỗi f và sẽ chỉ đưa ra một thông báo chung là "cú pháp không hợp lệ". Trong trường hợp này, vấn đề là mã trông thì rất ổn nhưng nó lại được chạy với phiên bản Python cũ

Cú pháp Python đang tiếp tục thay đổi, do đó sẽ có những tính năng mới được giới thiệu trong Python 3. 8

  • Toán tử hải mã (biểu thức gán)
  • Cú pháp chuỗi F để gỡ lỗi
  • Đối số chỉ vị trí

Nếu bạn muốn thử các tính năng mới này thì hãy chắc chắn rằng mình sử dụng môi trường Python 3. 8. Nếu không, bạn sẽ gặp lỗi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2

Trăn 3. 8 cũng cung cấp

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
048 mới. Bạn sẽ thấy cảnh báo này trong các trường hợp mà cú pháp hợp lệ nhưng vẫn có chút nghi ngờ. Ví dụ như khi bạn thiếu dấu "," giữa hai tuple trong một danh sách. Việc làm như vậy có thể là hợp lệ về mặt cú pháp trong các phiên bản Python trước 3. 8, but code will raise up error
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
049 by because an tuple is not callable (không thể gọi)

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
69

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
049 điều này có nghĩa là bạn không thể gọi một tuple như một hàm - điều mà trình biên dịch nghĩ rằng bạn đang cố gắng làm

Trong Python 3. 8, đoạn mã này sẽ vẫn tăng lên lỗi

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 nhưng bây giờ bạn sẽ thấy một
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
052 nói rằng bạn cần phải giải quyết vấn đề

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
00

Lời nhắn kèm theo

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
048 thậm chí còn chỉ cho bạn hướng giải quyết vấn đề

Sự kết luận

Trong phần hướng dẫn này, bạn đã thấy các thông tin mà dấu vết của

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 cung cấp cho bạn. Bạn cũng đã thấy các ví dụ về lỗi cú pháp và giải pháp cho họ

Khi viết mã, bạn hãy thử sử dụng một IDE hỗ trợ giám sát lỗi và cung cấp phản hồi hữu ích. Nếu bạn đưa những đoạn mã này vào một IDE tốt, nó sẽ làm nổi bật các lỗi cú pháp cho bạn thấy

Việc gặp lỗi cú pháp

>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2 khi bạn đang học Python có thể khiến bạn thất vọng nhưng bây giờ bạn đã hiểu được các tin nhắn từ truy nguyên và các dạng lỗi cú pháp trong Python mà bạn có thể gặp phải. Một lần nói khi gặp lỗi
>>> names = ['pam', 'jim', 'michael']
>>> if 'jim' in names:
...     print('jim found')
...     break
...
  File "", line 3
SyntaxError: 'break' outside loop

>>> if 'jim' in names:
...     print('jim found')
...     continue
...
  File "", line 3
SyntaxError: 'continue' not properly in loop
2, bạn sẽ sửa lỗi đó nhanh hơn