網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
出現(xiàn)invalid syntax報(bào)錯(cuò)的幾種原因
這篇文章旨為剛接觸python不久的朋友,提供一點(diǎn)幫助,請(qǐng)?jiān)跈z查代碼沒(méi)有主要問(wèn)題時(shí)再看是否存在以下問(wèn)題。
一般來(lái)說(shuō),寫(xiě)完代碼運(yùn)行時(shí),如果代碼中有錯(cuò)誤,解釋器會(huì)提示錯(cuò)誤信息,按照提示信息,一般很快可以找出錯(cuò)誤,進(jìn)行修改。但也有一些時(shí)候錯(cuò)誤提示的信息不是那么明確,代碼檢查了幾遍仍找不出問(wèn)題,就比較頭疼了。今天我們來(lái)說(shuō)一個(gè)常見(jiàn)的invalid syntax,在寫(xiě)代碼的過(guò)程中,哪些小細(xì)節(jié)錯(cuò)誤容易導(dǎo)致invalid syntax報(bào)錯(cuò)。更多的原因,后續(xù)逐漸補(bǔ)充......
1.符號(hào)使用不正確
例如:只寫(xiě)了半個(gè)括號(hào),使用了中文符號(hào)等
像下面的代碼中,76行少了一個(gè)右括號(hào)。
…… else: header = "HTTP/1.1 200 OK\r\n" header += "\r\n" 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() ……
運(yùn)行代碼,則會(huì)報(bào)錯(cuò):
?File "w01.py", line 78
? ? new_socket.close()
? ? ? ? ? ? ?^
SyntaxError: invalid syntax
其實(shí),78行并沒(méi)有錯(cuò)誤,這時(shí)我們就在78行附近尋找,看是否有成對(duì)的符號(hào)(如括號(hào))未成對(duì)使用的情況。在76行補(bǔ)全右括號(hào)后,代碼運(yùn)行正常。
有些解釋器會(huì)有自動(dòng)補(bǔ)全符號(hào)的功能。有些則沒(méi)有,這時(shí)對(duì)于新手朋友要特別注意,在寫(xiě)成對(duì)的符號(hào)時(shí)(例如括號(hào)、引號(hào)等)一定要一次把一對(duì)符號(hào)寫(xiě)完,再在符號(hào)中填寫(xiě)內(nèi)容,避免因這種情況出現(xiàn)bug,后續(xù)檢查花費(fèi)大量時(shí)間。
2.代碼縮進(jìn)問(wèn)題
python是一種嚴(yán)格依賴縮進(jìn)的語(yǔ)言,如果縮進(jìn)不正確或縮進(jìn)格式不統(tǒng)一,一般錯(cuò)誤信息會(huì)明確告訴你,但有時(shí)也會(huì)出現(xiàn)invalid syntax報(bào)錯(cuò)。
所謂縮進(jìn)不正確,python的縮進(jìn)是四個(gè)空格或一個(gè)TAB,如果縮進(jìn)三個(gè)空格,一定報(bào)錯(cuò)
所謂縮進(jìn)格式,即不能空格和TAB混用。如果不清楚是否存在混用,可以使用sublime統(tǒng)一調(diào)整即可。
invalid syntax——無(wú)效語(yǔ)法
錯(cuò)誤代碼塊
num_1=float(input(“請(qǐng)輸入第一個(gè)數(shù):”)) num_2=float(input(“請(qǐng)輸入第二個(gè)數(shù):”)) c=(input(“請(qǐng)選擇運(yùn)算類型: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(“運(yùn)算結(jié)果是:”,out)`
出現(xiàn)錯(cuò)誤:invalid syntax
在此程序中,把“、+、-、、/等運(yùn)算符直接用在if條件中造成報(bào)錯(cuò),故字符串類型和數(shù)值類型*不一樣,應(yīng)用“+”、“-”符號(hào)作為判斷條件。
調(diào)整后代碼
num_1=float(input(“請(qǐng)輸入第一個(gè)數(shù):”)) num_2=float(input(“請(qǐng)輸入第二個(gè)數(shù):”)) c=(input(“請(qǐng)選擇運(yùn)算類型: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(“運(yùn)算結(jié)果是:”,out)
原文鏈接:https://www.cnblogs.com/lenfoo/p/11251517.html
相關(guān)推薦
- 2022-06-28 Python技法之簡(jiǎn)單遞歸下降Parser的實(shí)現(xiàn)方法_python
- 2022-09-26 Redis刪除策略的三種方法及逐出算法_Redis
- 2022-12-27 Go標(biāo)準(zhǔn)庫(kù)日志打印及同時(shí)輸出到控制臺(tái)與文件_Golang
- 2021-11-12 C++?路徑中./、../、/代表的含義_C 語(yǔ)言
- 2022-04-08 深入理解Golang的反射reflect示例_Golang
- 2022-11-22 GoLang?channel關(guān)閉狀態(tài)相關(guān)操作詳解_Golang
- 2022-12-26 C語(yǔ)言實(shí)現(xiàn)十六進(jìn)制轉(zhuǎn)換為十進(jìn)制的方法詳解_C 語(yǔ)言
- 2022-11-15 一文詳解React?Redux使用方法_React
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支