本文目錄一覽:
Python中錯誤與異常的規範?
8. 錯誤和異常
至今為止還沒有進一步的談論過錯誤信息,不過在你已經試驗過的那些例子中,可能已經遇到過一些。Python 中(至少)有兩種錯誤:語法錯誤和異常( syntax errors 和 exceptions )。
8.1. 語法錯誤
語法錯誤,也被稱作解析錯誤,也許是你學習 Python 過程中最常見抱怨:
while True print(‘Hello world’)
File “
“, line 1, in ?
while True print(‘Hello world’)
^
SyntaxError: invalid syntax
語法分析器指出錯誤行,並且在檢測到錯誤的位置前面顯示一個小“箭頭”。 錯誤是由箭頭 前面 的標記引起的(或者至少是這麼檢測的): 這個例子中,函數 print() 被發現存在錯誤,因為它前面少了一個冒號( ‘:’ )。 錯誤會輸出文件名和行號,所以如果是從腳本輸入的你就知道去哪裡檢查錯誤了。
python錯誤求解
ISO 3166 中沒有 AFE 這個代碼的。
對於這樣的情況,需要做相應的錯誤處理,在得到的國家代碼是無效的情況下,給出提示並跳過後續。
if alpha3_code and len(str(alpha3_code))==3:
….try:
……..alpha2_code = countries.get(alpha3_code).alpha2.lower()
……..df.at[i,’Code’] = f'{alpha2_code}/flat/64.png’
…except (KeyError,) as err:
……print(f’國家代碼 “{err}” 是無效的。’)
Python 運行報錯NameError出現原因,怎麼解決
python程序,報錯NameError: name XX is not defined 是沒有聲明造成的,需要在文件的前兩行進行聲明編碼,聲明方法為:
1、寫一個python文件,文件中有中文字符,且未聲明編碼。
2、當程序文件中,存在中文字符時候,文件未聲明編碼格式就會出現報錯信息: File “encode.py”, line 1SyntaxError:
Non-ASCII character ‘\xe7’ in file encode.py on line 1, but no encoding
declared; see //..python…/dev/peps/pep-0263/ for details for details。
3、根據錯誤提示,在python官網得到如下幫助信息。
4、所以,按照幫助文檔的提示以及例子,在Python文件中加入一個編碼聲明。
5、保存之後,再次運行,運行成功。
python新手常見的報錯有哪些
1.NameError變量名錯誤
報錯:
print a
Traceback (most recent call last):
File “stdin”, line 1, in module
NameError: name ‘a’ is not defined
解決方案:
先要給a賦值。才能使用它。在實際編寫代碼過程中,報NameError錯誤時,查看該變量是否賦值,或者是否有大小寫不一致錯誤,或者說不小心將變量名寫錯了。
註:在Python中,無需顯示變量聲明語句,變量在第一次被賦值時自動聲明。
a=1
print a
1
2.IndentationError代碼縮進錯誤
代碼:
a=1
b=2
if ab:
print a
報錯:
IndentationError: expected an indented block
原因:
縮進有誤,python的縮進非常嚴格,行首多個空格,少個空格都會報錯。這是新手常犯的一個錯誤,由於不熟悉python編碼規則。像def,class,if,for,while等代碼塊都需要縮進。
縮進為四個空格寬度,需要說明一點,不同的文本編輯器中製表符(tab鍵)代表的空格寬度不一,如果代碼需要跨平台或跨編輯器讀寫,建議不要使用製表符。
解決方案:
a=1
b=2
if ab:
print a
3.AttributeError對象屬性錯誤
報錯:
import sys
sys.Path
Traceback (most recent call last):
File “stdin”, line 1, in module
AttributeError: ‘module’ object has no attribute ‘Path’
原因:
sys模塊沒有Path屬性。
解決方案:
python對大小寫敏感,Path和path代表不同的變量。將Path改為path即可。
sys.path
[”, ‘/usr/lib/python2.6/site-packages’]
python知識拓展:
使用dir函數查看某個模塊的屬性
dir(sys)
[‘__displayhook__’, ‘__doc__’, ‘__egginsert’, ‘__excepthook__’, ‘__name__’, ‘__package__’, ‘__plen’, ‘__stderr__’, ‘__stdin__’, ‘__stdout__’, ‘_clear_type_cache’, ‘_current_frames’, ‘_getframe’, ‘api_version’, ‘argv’, ‘builtin_module_names’, ‘byteorder’, ‘call_tracing’, ‘callstats’, ‘copyright’, ‘displayhook’, ‘dont_write_bytecode’, ‘exc_clear’, ‘exc_info’, ‘exc_type’, ‘excepthook’, ‘exec_prefix’, ‘executable’, ‘exit’, ‘flags’, ‘float_info’, ‘getcheckinterval’, ‘getdefaultencoding’, ‘getdlopenflags’, ‘getfilesystemencoding’, ‘getprofile’, ‘getrecursionlimit’, ‘getrefcount’, ‘getsizeof’, ‘gettrace’, ‘hexversion’, ‘maxint’, ‘maxsize’, ‘maxunicode’, ‘meta_path’, ‘modules’, ‘path’, ‘path_hooks’, ‘path_importer_cache’, ‘platform’, ‘prefix’, ‘ps1’, ‘ps2’, ‘py3kwarning’, ‘setcheckinterval’, ‘setdlopenflags’, ‘setprofile’, ‘setrecursionlimit’, ‘settrace’, ‘stderr’, ‘stdin’, ‘stdout’, ‘subversion’, ‘version’, ‘version_info’, ‘warnoptions’]
4.TypeError類型錯誤
4.1入參類型錯誤
代碼:
t=(‘a’,’b’,’c’)
for i in range(t):
print a[i]
報錯:
TypeError: range() integer end argument expected, got tuple.
原因:
range()函數期望的入參是整型(integer),但卻給的入參為元組(tuple)
解決方案:
將入參元組t改為元組個數整型len(t)
將range(t)改為range(len(t))
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/160659.html