0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

代碼又雙叕錯(cuò)誤,python17個(gè)常見失誤不僅新手會(huì)犯,你也可能會(huì)

電子工程師 ? 來源:未知 ? 作者:佚名 ? 2017-09-19 11:08 ? 次閱讀

對(duì)初學(xué)者來說,想要弄懂Python的某些錯(cuò)誤信息還是有困難的,下面羅列了一些常見的運(yùn)行時(shí)錯(cuò)誤:

1.忘記在if, elif, else, for, while, class, def 語句末尾添加冒號(hào)(:),從而導(dǎo)致:“SyntaxError: invalid syntax”錯(cuò)誤

錯(cuò)誤發(fā)生在如下類似代碼里:if spam == 42print('Hello!')

2.使用=號(hào),而不是==號(hào),從而導(dǎo)致 “SyntaxError: invalid syntax”錯(cuò)誤

“=”是賦值語句,而“==”號(hào)是比較兩值是否相等的,這種錯(cuò)誤常發(fā)生在如下類似代碼中:if spam = 42:print('Hello!')

3.使用縮進(jìn)量錯(cuò)誤,從而導(dǎo)致“IndentationError:unexpected indent”、“IndentationError:unindent does not match any outer indetation level”和“IndentationError:expected an indented block”錯(cuò)誤

要記住的是縮進(jìn)只發(fā)生在以冒號(hào)(:)為結(jié)尾的語句之后的行,而此段語句結(jié)束后,必須恢復(fù)到之前的縮進(jìn)格式,這種錯(cuò)誤常發(fā)生在如下代碼之中:

print('Hello!')print('Howdy!')...and this:

if spam == 42:print('Hello!')print('Howdy!')...and this:

if spam == 42:print('Hello!')

4.在 for 循環(huán)語句中忘記調(diào)用 len()從而導(dǎo)致“TypeError: ‘list’ object cannot be interpreted as an integer”錯(cuò)誤

你想要通過索引來迭代一個(gè)list或者string的元素,這時(shí)就需要調(diào)用 range() 函數(shù)。但是range函數(shù)接受的是只能是數(shù)字,比如len()的返回值,而非一個(gè)列表。這種錯(cuò)誤常發(fā)生在如下代碼中:spam = ['cat', 'dog', 'mouse']for i in range(spam):print(spam[i])

5.嘗試修改string的值,從而導(dǎo)致“TypeError: ‘str’ object does not support item assignment”錯(cuò)誤

string是一種不可變的數(shù)據(jù)類型,該錯(cuò)誤常發(fā)生在如下代碼中:spam = 'I have a pet cat.'spam[13] = 'r'print(spam)

6.嘗試連接非字符串值與字符串,從而導(dǎo)致 “TypeError: Can’t convert ‘int’ object to str implicitly”錯(cuò)誤

錯(cuò)誤常發(fā)生在如下代碼中:numEggs = 12print('I have ' + numEggs + ' eggs.')

而你實(shí)際想這樣做:numEggs = 12print('I have ' + str(numEggs) + ' eggs.')

或者:numEggs = 12print('I have %s eggs.' % (numEggs))

7.在字符串首尾忘記加引號(hào),從而導(dǎo)致“SyntaxError: EOL while scanning string literal”錯(cuò)誤

該錯(cuò)誤發(fā)生在如下代碼中:print(Hello!')

或者:print('Hello!)

或者:myName = 'Al'print('My name is ' + myName + . How are you?')

8.變量或者函數(shù)名拼寫錯(cuò)誤,從而導(dǎo)致“NameError: name ‘fooba’ is not defined”錯(cuò)誤

該錯(cuò)誤發(fā)生在如下代碼中:foobar = 'Al'print('My name is ' + fooba)

或者:spam = ruond(4.2)

或者:spam = Round(4.2)

9.方法名拼寫錯(cuò)誤,從而導(dǎo)致 “AttributeError: ‘str’ object has no attribute ‘lowerr’”錯(cuò)誤

該錯(cuò)誤發(fā)生在如下代碼中:spam = 'THIS IS IN LOWERCASE.'spam = spam.lowerr()

10.引用list下標(biāo)超出范圍,從而導(dǎo)致“IndexError: list index out of range”錯(cuò)誤

該錯(cuò)誤常發(fā)生在如下代碼中:spam = ['cat', 'dog', 'mouse']print(spam[6])

11.使用不存在的字典鍵值,從而導(dǎo)致“KeyError:‘spam’”錯(cuò)誤

該錯(cuò)誤發(fā)生在如下代碼中:spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'}print('The name of my pet zebra is ' + spam['zebra'])

12.嘗試使用Python關(guān)鍵字作為變量名,從而導(dǎo)致“SyntaxError:invalid syntax”錯(cuò)誤

Python關(guān)鍵字不能用作變量名,該錯(cuò)誤發(fā)生在如下代碼中:class = 'algebra'

Python3的關(guān)鍵字有:and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield

13.在一個(gè)定義新變量中使用增值操作符,從而導(dǎo)致“NameError: name ‘eggs’ is not defined”錯(cuò)誤

不要以為變量在創(chuàng)建時(shí)就使用0或者空字符串作為初始值,就使用自增操作符的一句spam += 1或spam = spam + 1,而spam是需要手動(dòng)顯示的指定一個(gè)有效的初始值。

該錯(cuò)誤發(fā)生在如下代碼中:spam = 0spam += 42eggs += 42

14.在定義局部變量前在函數(shù)中使用局部變量(此時(shí)有與局部變量同名的全局變量存在),則會(huì)導(dǎo)致“UnboundLocalError: local variable ‘foobar’ referenced before assignment”)

在函數(shù)中使用局部變量,而同時(shí)又存在同名全局變量時(shí)是很復(fù)雜的,使用規(guī)則是:如果在函數(shù)中定義了任何東西,如果它只是在函數(shù)中使用那它就是局部的,反之就是全局變量。

這意味著你不能在定義它之前把它當(dāng)全局變量在函數(shù)中使用。

該錯(cuò)誤發(fā)生在如下代碼中:someVar = 42def myFunction():print(someVar)someVar = 100myFunction()

15.嘗試使用 range()創(chuàng)建整數(shù)列表(導(dǎo)致“TypeError: ‘range’ object does not support item assignment”)

有時(shí)你想要得到一個(gè)有序的整數(shù)列表,所以 range() 看上去是生成此列表的不錯(cuò)方式。然而,你需要記住 range() 返回的是 “range object”,而不是實(shí)際的 list 值。

該錯(cuò)誤發(fā)生在如下代碼中:spam = range(10)spam[4] = -1

也許這才是你想做:spam = list(range(10))spam[4] = -1

注意:在 Python 2 中 spam = range(10) 是能行的,因?yàn)樵?Python 2 中 range() 返回的是list值,但是在 Python 3 中就會(huì)產(chǎn)生以上錯(cuò)誤

16.使用 ++ 或 – 自增自減操作符,從而導(dǎo)致“SyntaxError: invalid syntax”)

如果你習(xí)慣于例如 C++ , Java , PHP 等其他的語言,也許你會(huì)想要嘗試使用 ++ 或者 – 自增自減一個(gè)變量。在Python中是沒有這樣的操作符的。

該錯(cuò)誤發(fā)生在如下代碼中:spam = 1spam++

也許這才是你想做的:spam = 1spam += 1

17.忘記為方法的第一個(gè)參數(shù)添加self參數(shù)(導(dǎo)致“TypeError: myMethod() takes no arguments (1 given)”)

該錯(cuò)誤發(fā)生在如下代碼中:class Foo():def myMethod():print('Hello!')a = Foo()a.myMethod()

文章來源:百度文庫


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4756

    瀏覽量

    84284
  • 錯(cuò)誤代碼
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    9971

原文標(biāo)題:17個(gè)新手常見的Python運(yùn)行時(shí)錯(cuò)誤

文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【labview我來告訴】小失誤大影響—?jiǎng)e讓的程序毀于一旦

    編程中小失誤在所難免,少接一步多接一步的情況并不少見,然而我們今天要提醒大家的這個(gè)失誤在實(shí)際操作中卻需要加倍小心,因?yàn)橐坏?b class='flag-5'>你出現(xiàn)這種錯(cuò)誤
    發(fā)表于 11-03 17:08

    python新手常見錯(cuò)誤匯總

    對(duì)于新手,初學(xué)Python時(shí),總會(huì)遇到這樣那樣的報(bào)錯(cuò),想要弄懂Python錯(cuò)誤信息的含義可能還不知道怎么做,這里列出了一些比較
    發(fā)表于 01-26 16:41

    PCB布局樣式錯(cuò)誤可能會(huì)破壞您的設(shè)計(jì)

    的草率設(shè)計(jì)錯(cuò)誤,但由于這些草率錯(cuò)誤造成的混亂,可能會(huì)影響裝配,調(diào)試和產(chǎn)量。本文介紹了一些基本的草率PCB設(shè)計(jì)風(fēng)格錯(cuò)誤以及如何避免它們。 墊下的參考指示器放置在銅上的參考標(biāo)志顯示在PCB
    發(fā)表于 07-14 12:34

    未來AI可能會(huì)更替180萬個(gè)崗位,該如何應(yīng)對(duì)?

    根據(jù)科研公司Gartner的一項(xiàng)新研究,到2020年,人工智能(AI)和機(jī)器學(xué)習(xí)可能會(huì)淘汰180萬個(gè)工作崗位,但同時(shí)創(chuàng)造230萬個(gè)新崗位。在這種情況下,消失和創(chuàng)造這兩大不同結(jié)果在很大程度上取決于
    發(fā)表于 01-24 07:44 ?961次閱讀

    Python編程時(shí)常見的3個(gè)錯(cuò)誤

    以下列出了學(xué)習(xí) Python 時(shí)的三種錯(cuò)誤: 1.可變數(shù)據(jù)類型作為函數(shù)定義中的默認(rèn)參數(shù) 2.可變數(shù)據(jù)類型作為類變量 3. 可變的分配錯(cuò)誤
    發(fā)表于 03-21 11:46 ?1166次閱讀

    Python編程中的三種錯(cuò)誤,讓浪費(fèi)一下午時(shí)間

    為了讓初學(xué) Python 的程序員避免同樣的錯(cuò)誤,以下列出了我學(xué)習(xí) Python 時(shí)的三種錯(cuò)誤
    發(fā)表于 07-07 08:55 ?5808次閱讀

    如何讓Python編程中不出現(xiàn)反模式?避免初學(xué)Python常見錯(cuò)誤

    篇文章收集了我在Python新手開發(fā)者寫的代碼中所見到的不規(guī)范但偶爾很微妙的問題。本文的目的是為了幫助那些新手開發(fā)者渡過寫出丑陋的
    的頭像 發(fā)表于 09-24 10:38 ?2742次閱讀

    新手學(xué)習(xí)Python有哪些常見錯(cuò)誤

    學(xué)習(xí)Python的過程中發(fā)現(xiàn)一些常見錯(cuò)誤,或許大家會(huì) 遇到,這里在此總結(jié)如下:
    發(fā)表于 10-30 19:45 ?4次下載

    Linux管理員經(jīng)常會(huì)的十個(gè)錯(cuò)誤知道是什么嗎

    如果您是Linux的新手,那么一些常見錯(cuò)誤可能會(huì)給您帶來麻煩。提前了解它們,您就可以再逐漸熟悉Linux時(shí)避免出現(xiàn)重大問題。
    的頭像 發(fā)表于 01-18 11:13 ?1869次閱讀

    神經(jīng)網(wǎng)絡(luò)會(huì)一些人類根本不會(huì)錯(cuò)誤

    的方式與人類更相近。但是,神經(jīng)網(wǎng)絡(luò)還是會(huì)一些人類根本不會(huì)錯(cuò)誤,改進(jìn)空間仍很大。 對(duì)抗樣本:如果在這張熊貓圖片上添加一
    的頭像 發(fā)表于 01-05 14:10 ?2106次閱讀
    神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>會(huì)</b><b class='flag-5'>犯</b>一些人類根本不會(huì)<b class='flag-5'>犯</b>的<b class='flag-5'>錯(cuò)誤</b>

    Python新手經(jīng)常會(huì)那些錯(cuò)誤

    當(dāng)初學(xué)Python 時(shí),想要弄懂Python錯(cuò)誤信息的含義可能有點(diǎn)復(fù)雜。這里列出了常見的的一些讓
    發(fā)表于 03-12 16:20 ?16次下載
    <b class='flag-5'>Python</b><b class='flag-5'>新手</b>經(jīng)常會(huì)<b class='flag-5'>犯</b>那些<b class='flag-5'>錯(cuò)誤</b>

    MLCC選型,工程師可能會(huì)哪些錯(cuò)資料下載

    電子發(fā)燒友網(wǎng)為提供MLCC選型,工程師可能會(huì)哪些錯(cuò)資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫
    發(fā)表于 03-28 08:48 ?2次下載
    MLCC選型,工程師<b class='flag-5'>可能會(huì)</b><b class='flag-5'>犯</b>哪些錯(cuò)資料下載

    Python中有哪些常見錯(cuò)誤和異常

    python常見異常類型 在程序運(yùn)行過程中,總會(huì)遇到各種各樣的問題和錯(cuò)誤。 有些錯(cuò)誤是我們編寫代碼時(shí)自己造成的,比如語法
    的頭像 發(fā)表于 03-04 16:58 ?4091次閱讀

    哪些錯(cuò)誤PLC新手容易

    PLC新手在使用和編程PLC時(shí)容易以下一些常見錯(cuò)誤: (1)電氣接線錯(cuò)誤:PLC的輸入和輸出需要正確地與外部設(shè)備進(jìn)行連接。
    的頭像 發(fā)表于 10-11 17:10 ?786次閱讀

    python運(yùn)行完后為什么會(huì)閃退

    Python是一種高級(jí)編程語言,用于開發(fā)各種應(yīng)用程序和腳本。當(dāng)你運(yùn)行一個(gè)Python程序時(shí),計(jì)算機(jī)會(huì)首先加載并解釋代碼,然后按照代碼的邏輯執(zhí)
    的頭像 發(fā)表于 11-29 15:14 ?8140次閱讀