首頁 > 軟體

python中出現invalid syntax報錯的幾種原因分析

2022-02-12 16:00:28

出現invalid syntax報錯的幾種原因

這篇文章旨為剛接觸python不久的朋友,提供一點幫助,請在檢查程式碼沒有主要問題時再看是否存在以下問題。

一般來說,寫完程式碼執行時,如果程式碼中有錯誤,直譯器會提示錯誤資訊,按照提示資訊,一般很快可以找出錯誤,進行修改。但也有一些時候錯誤提示的資訊不是那麼明確,程式碼檢查了幾遍仍找不出問題,就比較頭疼了。今天我們來說一個常見的invalid syntax,在寫程式碼的過程中,哪些小細節錯誤容易導致invalid syntax報錯。更多的原因,後續逐漸補充......

1.符號使用不正確

例如:只寫了半個括號,使用了中文符號等

像下面的程式碼中,76行少了一個右括號。

        ……
        else:
            header = "HTTP/1.1 200 OKrn"
            header += "rn"
            body = "hahahaha"
            response = header + body
            new_socket.send(response.encode("utf-8")
        new_socket.close()
    def run_forever(self):
        while True:
            new_socket, client_addr = self.tcp_server_socket.accept()
            
            p = multiprocessing.Process(target=self.service_client, args=(new_socket,))
            p.start()
            
            new_socket.close()
            ……

執行程式碼,則會報錯:

 File "w01.py", line 78
    new_socket.close()
             ^
SyntaxError: invalid syntax

其實,78行並沒有錯誤,這時我們就在78行附近尋找,看是否有成對的符號(如括號)未成對使用的情況。在76行補全右括號後,程式碼執行正常。

有些直譯器會有自動補全符號的功能。有些則沒有,這時對於新手朋友要特別注意,在寫成對的符號時(例如括號、引號等)一定要一次把一對符號寫完,再在符號中填寫內容,避免因這種情況出現bug,後續檢查花費大量時間。

2.程式碼縮排問題

python是一種嚴格依賴縮排的語言,如果縮排不正確或縮排格式不統一,一般錯誤資訊會明確告訴你,但有時也會出現invalid syntax報錯。

所謂縮排不正確,python的縮排是四個空格或一個TAB,如果縮排三個空格,一定報錯

所謂縮排格式,即不能空格和TAB混用。如果不清楚是否存在混用,可以使用sublime統一調整即可。

invalid syntax——無效語法

錯誤程式碼塊

num_1=float(input(「請輸入第一個數:」))
num_2=float(input(「請輸入第二個數:」))
c=(input(「請選擇運算型別:1.+ 2- 3.* 4./ 5.% :」))
if c==+
out=num_1 + num_2
if c==-:
out=num_1 - num_2
if c==*:
out=num_1 * num_2
if c==/:
out=num_1 / num_2
if c==%:
out=num_1 % num_2
print(「運算結果是:」,out)`

出現錯誤:invalid syntax

在此程式中,把“、+、-、、/等運運算元直接用在if條件中造成報錯,故字串型別和數值型別*不一樣,應用“+”、“-”符號作為判斷條件。

調整後程式碼

num_1=float(input(「請輸入第一個數:」))
num_2=float(input(「請輸入第二個數:」))
c=(input(「請選擇運算型別:1.+ 2- 3.* 4./ 5.% :」))
if c=="+":
out=num_1 + num_2
if c=="-":
out=num_1 - num_2
if c=="*":
out=num_1 * num_2
if c=="/":
out=num_1 / num_2
if c=="%":
out=num_1 % num_2
print(「運算結果是:」,out)

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com