Python怎么看哪行代碼出錯(cuò)(python報(bào)錯(cuò)信息怎么看)
本篇文章給大家談?wù)凱ython怎么看哪行代碼出錯(cuò),以及python報(bào)錯(cuò)信息怎么看對(duì)應(yīng)的知識(shí)點(diǎn),希望對(duì)各位有所幫助,不要忘了收藏本站喔。
本文目錄一覽:
- 1、這個(gè)是哪里出錯(cuò)了 python的列表推導(dǎo)式?
- 2、幫我看看看這個(gè)Python代碼哪里錯(cuò)了?
- 3、python的代碼錯(cuò)誤,可以幫我看看這一段代碼哪里錯(cuò)了嗎?
這個(gè)是哪里出錯(cuò)了 python的列表推導(dǎo)式?
題主你好,
你的問題出在不了解列表推導(dǎo)的語(yǔ)法.
先說一下你寫的代碼問題出在哪, 因?yàn)榱斜硗茖?dǎo)是一種語(yǔ)法糖, 語(yǔ)法糖這東西我的理解就是代碼精簡(jiǎn)式的寫法, 你可以簡(jiǎn)單的理解為正常的寫法可能要10行, 用語(yǔ)法糖可能1行就搞定了. 優(yōu)點(diǎn)是可以減少代碼量, 缺點(diǎn)也顯而易見,就是相對(duì)于常規(guī)寫法一開始學(xué)起來(lái)理解要困難一些.
列表推導(dǎo)寫法:? n = [ j if j*5==10 ]
把你的這個(gè)1行的列表推導(dǎo)轉(zhuǎn)化為常規(guī)寫法要3行:
轉(zhuǎn)化后的代碼不知題主有沒有看出問題,
這三行代碼單看都沒有問題, 第一行是給n賦一個(gè)空列表; 第二行是判斷變量j*5的結(jié)果是10;第三行是結(jié)果第二行的條件成立,則將j追加到列表n中.
但問題也出來(lái)了, 第二行中, if的條件部分, 變量j的值是啥呀? 你前面都沒有定義變量j,這里就直接用肯定是會(huì)出錯(cuò)的, 因?yàn)閜ython中的變量是前面定義了之后, 后面才能使用.
舉個(gè)小例子:
從上面圖片可以看出, 在沒有a賦值時(shí),你直接用,會(huì)提示你a這個(gè)變量還沒定義; 而你給a賦值3后, 再使用時(shí),會(huì)直接輸出a的值,3 就是這個(gè)道理.
-----
下面說下最常規(guī)的用法:
一般的列表推導(dǎo)都是for與if同時(shí)存在:
n = [j for j in range(10) if j*5==10]
照著上面講的邏輯說, for語(yǔ)句中給變量j提供值, 然后if中把這個(gè)值代入條件表示式看是否成立,如果成立,則將j追加到列表n中.
我們把這個(gè)列表推導(dǎo)轉(zhuǎn)換為常規(guī)寫法:
上面代碼就形成了一個(gè)完整的閉環(huán)了.
所以學(xué)習(xí)列表推導(dǎo)很關(guān)鍵的一點(diǎn)是題主能否在常規(guī)代碼與列表推導(dǎo)之間進(jìn)行轉(zhuǎn)換, 如果可以的話,題主寫完列表推導(dǎo)后可以將其轉(zhuǎn)化為常規(guī)代碼去看, 如果常規(guī)代碼沒問題, 則列表推導(dǎo)自然也就是對(duì)的.
-----
擴(kuò)展閱讀:
網(wǎng)頁(yè)鏈接該鏈接中有一些簡(jiǎn)單的例子,里面既給出了列表推導(dǎo)的寫法也給出了相對(duì)應(yīng)的常規(guī)寫法,題主可以研究一下這二者是怎么轉(zhuǎn)換的, 不難.
=====
希望可以幫到題主, 歡迎追問.
幫我看看看這個(gè)Python代碼哪里錯(cuò)了?
沒看錯(cuò)這是求根公式吧?
其他沒問題,關(guān)鍵在于這一句:
在python中,這種一行多個(gè)賦值的方法是不合法的,不能用逗號(hào),得用分號(hào):
或者你也可以分行寫
完整代碼:
from?numpy.lib.scimath?import?sqrt
a=float(input());b=float(input());c=float(input())
d=0
if?a==0:
????d=(-1)*c/b
????print(d)
????
elif?b**2-4*a*c0:
????x1=((-1)*b+sqrt(b**2-4*a*c))/2*a
????x2=((-1)*b-sqrt(b**2-4*a*c))/2*a
????print(x1,x2)
????
elif?b*2-4*a*c==0:
????d=((-1)*b)+sqrt(b**2-4*a*c)/2*a
????print(d)
else:
????x1=((-1)*b+sqrt(b**2-4*a*c))/2*a
????x2=((-1)*b-sqrt(b**2-4*a*c))/2*a
????print(x1,x2)
測(cè)試(我用的python2)
python的代碼錯(cuò)誤,可以幫我看看這一段代碼哪里錯(cuò)了嗎?
a=3
b=2
c=0
if a == 0 and b == 0 :
print("不是方程")
else:
d= b*b-4*a*c
if d = 0 :
print("x1=",-b+pow(d,1/2)/2/a)
print("x2=",-b-pow(d,1/2)/2/a)
else:
print("方程無(wú)實(shí)根")
PS:注意代碼行的縮進(jìn),這在Python程序中表示層級(jí)關(guān)系;還有print語(yǔ)句后有英文狀態(tài)下的括號(hào)
Python怎么看哪行代碼出錯(cuò)的介紹就聊到這里吧,感謝你花時(shí)間閱讀本站內(nèi)容,更多關(guān)于python報(bào)錯(cuò)信息怎么看、Python怎么看哪行代碼出錯(cuò)的信息別忘了在本站進(jìn)行查找喔。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由飛速云SEO網(wǎng)絡(luò)優(yōu)化推廣發(fā)布,如需轉(zhuǎn)載請(qǐng)注明出處。