網站首頁 編程語言 正文
一、粗心導致的語法錯誤SyntaxError
1、input輸入報錯
age=input('請輸入你的年齡:') if age>=18: ? ? print("成年人做事需要。。。。")
報錯:TypeError: '>=' not supported between instances of 'str' and 'int'
因為input輸入返回值是字符串所以無法與整數類型數字比較
解決辦法: 在input
前面加上int()
,把input輸入的數轉為整數類型,就可以比較數據了
age=int(input('請輸入你的年齡:')) if age>=18: ? ? print("成年人做事需要。。。。")
2、循環語句報錯
while i<10: ? ? print (i)
循環語句報錯:錯誤原因,沒有循環變量初始值,也沒有循環變量的遞增,然后使用括號不規范,使用的中文的括號
解決方法: 添加虛幻變量的初始值,添加循環變量的遞增,將不規范的括號改正(使用中文括號)
循環要有三要素:
?i=1 ? #循環變量的起始值 while i < 10: ? #循環的條件語句 ? ? print(i) ? ? i+=1 ? #變量的遞增
3、賦值報錯
for i in range(3): ? ? uname =input("請輸入用戶名:") ? ? upwd=input("請輸入密碼:") ? ? if uname="admin" and upwd=pwd: ? ? ? ? print("登陸成功!") ? ? else ? ? ? ? print("輸入有誤") else ? ? print("對不起,三次均輸入錯誤")
報錯:SyntaxError: invalid syntax. Maybe you meant '==' or ':=' instead of '='?
錯誤多處:=是賦值,==才是比較,if語句比較時使用了=賦值語句,所以出錯,還有就是未定義比較的內容admin然后就是else語句后面未加:
解決方法: ?在if語句比較處將=換成==,因為=是賦值,==是比較,還有就是在循環開始前加上用來比較的變量,然后再else語句后加上冒號:
admin="hua" pwd="123456" for i in range(3): ? ? uname =input("請輸入用戶名:") ? ? upwd=input("請輸入密碼:") ? ? if uname==admin and upwd==pwd: ? ? ? ? print("登陸成功!") ? ? else: ? ? ? ? print("輸入有誤") else: ? ? print("對不起,三次均輸入錯誤")
粗心導致錯誤的自查寶典:
- 1、漏了末尾的冒號,如if語句,循環語句,else子句等。
- 2、縮進錯誤,該縮進的沒縮進,不該縮進的卻縮進了。
- 3、把英文符號寫成中文符號沒比如說:引號,冒號,括號
- 4、字符串拼接的時候,把字符串和數字拼接在一起
- 5、沒有定義變量,比如說while的循環條件變量
- 6、"=="比較運算符和"="賦值運算符的混用
二、知識不熟練導致的錯誤Bug
1、索引越界問題 IndexError
lst=[11,22,33,44] print(lst[4])
錯誤:IndexError: list index out of range 索引越界,雖然有四個數,但索引不是從一開始算,正索引是從0開始算,負索引是從-1開始算
解決辦法: 改寫為正確的索引
lst=[11,22,33,44] print(lst[3])
2、append()函數的使用報錯
lst=[] lst=append("A","B","C") print((lst))
報錯:NameError: name 'append' is not defined 錯誤的方法使用append()函數
解決方法:掌握正確的使用函數的技巧,使用函數不是使用=調用,而是使用.去調用函數,并且append()
函數一次只能增加一個元素
lst=[] lst.append("A") lst.append("B") lst.append("C") print((lst)) ?#返回值['A', 'B', 'C']
知識點掌握不熟練的導致的錯誤,唯一的解決方法就是練練練
三、思路不清晰導致的問題解決方案
1、使用print()函數
將出錯的代碼用print輸出,將有問題的代碼注釋掉,一步一步的調試,最后將想要的結果輸出
2、使用"#"暫時注銷部分代碼?
解決方法:多加練習,掌握基礎知識
四、被動掉坑
程序代碼邏輯沒有錯,知識因為用戶錯誤操作或者一些"例外情況"而導致的程序崩潰
被動掉坑問題的解決方案:
python提供了異常處理機制,可以在異常出現時即使補貨,然后內部消化,讓程序繼續運行
異常捕獲處理 try: ? except ?xxx:語句 ? xxx為錯誤類型
try
:用于放入容易出錯的代碼
except用于處理異常并正常輸出后續代碼,可以使代碼不會報錯結束,可以出現多個except語句來處理多種異常類型。
使用方式:
try:
將容易出錯的代碼放入其中
易出錯代碼
易出錯代碼
except ?可能出現的類型:
print(捕獲異常后用于提示的話語)
except ?可能出現的類型:
print(捕獲異常后用于提示的話語)
一般代碼:
a=int(input("請輸入第一個整數:")) b=int(input("請輸入第二個整數:")) result=a/b print("結果為:",result)
極容易出現報錯,導致終止后面的程序,比如整除不能輸入0,不能輸入英文,只要輸入了,那么就會報錯結束程序
所以就需要使用到try: ?except
try: ? ?#將易錯代碼放進去 ? ? a=int(input("請輸入第一個整數:")) ? ? b=int(input("請輸入第二個整數:")) ? ? result=a/b ? ? print("結果為:",result) except ZeroDivisionError: ? #不允許被0除的異常(異常類型在程序報錯時會出現,將這種異常類型放入后,出現該異常就會自動處理,而不會報錯終止程序) ? ? print("對不起,除數不允許為0") ?#出現該異常后的提示 except ValueError: ? ?#輸入異常,int括號里的input只能輸入數字串,不能輸入字符串 ? ? print("只能輸入數字串") ? #出現該異常后的提示 print("程序結束") ? ?#程序可能出現的異常都用except寫出來了,所以不管出現什么異常,后面的程序一樣運行
原文鏈接:https://blog.csdn.net/weixin_53466908/article/details/122780023
相關推薦
- 2023-01-20 Python-with?open()?as?f的用法及說明_python
- 2022-03-20 C#中實現PriorityQueue優先級隊列的代碼_C#教程
- 2021-12-12 Redis實現分布式鎖的實例講解_Redis
- 2022-07-09 嵌入式linux使用trace調試步驟記錄
- 2022-09-01 C++中的Z字形變換問題_C 語言
- 2022-11-30 詳解如何在Go語言中循環數據結構_Golang
- 2023-12-11 IOC和AOP概念簡述
- 2022-06-18 go語言實現Elasticsearches批量修改查詢及發送MQ操作示例_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支