Pythonのよくある間違いは
NameError変数名エラー
IndentationErrorコードインデントエラー
AttributeErrorオブジェクト属性エラー
詳細な説明
1. NameError変数名エラー
エラー:
print a<br Traceback(most recent call last):<br File "<stdin ", line 1,in<module <br NameError: name 'a' is not defined<br
解決:
まず、に値を割り当てます。それを使用するには。実際のコーディングプロセスでは、NameErrorエラーが報告されたときに、変数に値が割り当てられているかどうか、ケースの不整合エラーがあるかどうか、または変数名が誤って誤って書き込まれていないかどうかを確認してください。
注:Pythonでは、変数宣言ステートメントを表示する必要はありません。変数は、初めて割り当てられたときに自動的に宣言されます。
a=1<br print a<br 1<br
2. IndentationErrorコードインデントエラー
コード
a=1b=2<br if a<b:<br print a<br
エラー:
IndentationError: expected an indented block<br
理由:
インデントが間違っています。Pythonのインデントは非常に厳密です。行の先頭に複数のスペースがある場合、スペースが少ないとエラーが報告されます。これは、初心者がPythonのコーディング規則に精通していないためによくある間違いです。 def、class、if、for、whileなどのコードブロックをインデントする必要があります。
インデントは4つのスペース幅です。説明が必要です。テキストエディターが異なれば、タブ文字で表されるスペース幅も異なります。プラットフォームやエディター間でコードを読み書きする必要がある場合は、タブを使用しないことをお勧めします。 。
解決
a=1b=2<br if a<b:<br print a<br
3. AttributeErrorオブジェクト属性エラー
エラー:
import sys<br sys.Path<br Traceback(most recent call last):<br File "<stdin ", line 1,in<module <br AttributeError:'module' object has no attribute 'Path'<br
理由:
sysモジュールにはPath属性がありません。
Pythonは大文字と小文字を区別し、Pathとpathは異なる変数を表します。パスをパスに変更するだけです。
sys.path<br ['','/usr/lib/python2.6/site-packages']<br
初心者が遭遇するエラーの例:
間違ったインデントを使用する
Pythonはインデントを使用してコードブロックを区別します。よくある誤用:
print('Hello!')print('Howdy!')
原因:IndentationError:予期しないインデント。同じコードブロック内のコードの各行は、一貫してインデントする必要があります
if spam ==42:print('Hello!')print('Howdy!')
原因:IndentationError:unindentが外部のインデントレベルと一致しません。コードブロックが終了すると、インデントは元の位置に復元されます
if spam ==42:print('Hello!')
原因:IndentationError:インデントされたブロックが必要です。「:」の後にインデントを使用する必要があります
変数が定義されていません
if spam ==42:print('Hello!')
原因:NameError:名前「spam」が定義されていません
リスト要素のインデックス位置を取得し、lenメソッドを呼び出すのを忘れます
インデックス位置で要素を取得する場合、リストの長さを取得するためにlen関数を使用することを忘れてください。
spam =['cat','dog','mouse']for i inrange(spam):print(spam[i])
原因:TypeError:range()整数の終了引数が必要です。リストを取得しました。正しいアプローチは次のとおりです。
spam =['cat','dog','mouse']for i inrange(len(spam)):print(spam[i])
もちろん、よりPythonicな方法はenumerateを使用することです
spam =['cat','dog','mouse']for i, item inenumerate(spam):print(i, item)
関数内のローカル変数割り当ての前に使用
someVar =42
def myFunction():print(someVar)
someVar =100myFunction()
原因:UnboundLocalError:割り当て前に参照されたローカル変数「someVar」
関数のグローバルスコープに同じ名前の変数がある場合、LEGBの順序で変数を検索します。同じ名前の変数が関数内のローカルスコープにも定義されている場合、その変数は外部スコープに移動しなくなります。調べた。したがって、someVarはmyFunction関数で定義されているため、print(someVar)は外部で検索されなくなりますが、印刷中に変数が割り当てられていないため、UnboundLocalErrorが表示されます。
上記は、pythonの一般的なエラーと解決策の詳細です。pythonの一般的なエラーの詳細については、ZaLou.Cnの他の関連記事に注意してください。
Recommended Posts