Pythonの各種実行時エラー(SyntaxError : invalid syntaxなど)。
Pythonのエラーメッセージの意味を理解しようとすると、少し複雑になることがあります。ここでは、あなたのプログラムをクラッシュさせる可能性のある一般的な実行時エラーのリストを示します。
1) if, elif, else, for, while, class, def文の最後に : (resulting in "SyntaxError: invalid syntax") を追加し忘れること。
以下のようなコードでエラーが発生します。
<テーブル1
2
if
spam
=
=
42
print
(
'Hello!'
)
2) ==の代わりに=を使う(結果として "SyntaxError:無効な構文" が発生する)。
= は代入演算子、==は等比級数演算子です。などのコードでエラーが発生します。
<テーブル1
2
if
spam
=
42
:
print
(
'Hello!'
)
3) インデントの使い方が間違っている。(結果として "IndentationError: unexpected indent", "IndentationError: unindent does not match any outer indetation level" and "IndentationError: expected an indented block") が発生する.
インデント増加は、: で終わる文の後にのみ使用され、それ以降は以前のインデント形式に戻さなければならないことを忘れないでください。このエラーは、次のようなコードで発生します。
<テーブル1
2
3
4
5
6
7
8
9
10
11
12
13
print
(
'Hello!'
)
print
(
'Howdy!'
)
Or.
if
spam
=
=
42
:
print
(
'Hello!'
)
print
(
'Howdy!'
)
Or.
if
spam
=
=
42
:
print
(
'Hello!'
)
4) forループ文の中でlen()を呼び出すのを忘れていた(結果は "TypeError: 'list' object cannot be interpreted as an integer" )。
通常、リストや文字列の要素をインデックス単位で反復処理したい場合は、range()関数を呼び出す必要があります。このとき、リストの代わりに len 値を返すことを忘れないでください。
などのコードでエラーが発生します。
<テーブル1
2
3
spam
=
[
'cat'
,
'dog'
,
'mouse'
]
for
i
in
range
(spam):
print
(spam[i])
5) 文字列の値を変更しようとした場合(結果は "TypeError: 'str' object does not support item assignment" です)。
文字列は不変のデータ型であり、このエラーは次のようなコードで発生します。
<テーブル1
2
3
spam
=
'I have a pet cat.'
spam[
13
]
=
'r'
print
(spam)
そして、実際にこうしたいのですね。
<テーブル1
2
3
spam
=
'I have a pet cat.'
spam
=
spam[:
13
]
+
'r'
+
spam[
14
:]
print
(spam)
6) 文字列でない値を文字列に連結しようとした(結果は "TypeError.となる。Can't convert 'int' object to str implicitly") となる。
などのコードでエラーが発生します。
<テーブル1
2
numEggs
=
12
print
(
'I have '
+
numEggs
+
' eggs.'
)
そして、実際にこうしたいのですね。
<テーブル1
2
3
4
5
6
7
numEggs
=
12
print
(
'I have '
+
str
(numEggs)
+
' eggs.'
)
Or.
numEggs
=
12
print
(
'I have %s eggs.'
%
(numEggs))
7) 文字列の最初と最後に引用符を付けるのを忘れた(結果として "SyntaxError: EOL while scanning string literal" が発生する)。
などのコードでエラーが発生します。
<テーブル
1
2
3
4
5
6
7
8
9
10
print
(Hello!')
or :
print
('Hello!)
or :
myName
=
'Al'
print
(
'My name is '
+
myName
+
. How are you?')
8) 変数名や関数名のスペルミス("NameError: name 'fooba' is not defined" が発生する。)
このエラーは、次のようなコードで発生します。
<テーブル1
2
3
4
5
6
7
8
9
10
foobar
=
'Al'
print
(
'My name is '
+
fooba)
or :
spam
=
ruond(
4.2
)
or :
spam
=
Round
(
4.2
)
9) メソッド名のスペルが間違っている ("AttributeError: 'str' object has no attribute 'lowerr'" が発生する)
このエラーは以下のコードで発生します。
<テーブル1
2
spam
=
'THIS IS IN LOWERCASE.'
spam
=
spam.lowerr()
10) 参照がリストの最大インデックスを超える(結果として "IndexError: list index out of range" が発生する)。
このエラーは以下のコードで発生します。
<テーブル1
2
spam
=
[
'cat'
,
'dog'
,
'mouse'
]
print
(spam[
6
])
11) 存在しない辞書のキー値を使用する (結果: "KeyError: 'spam'")
このエラーは、以下のコードで発生します。
<テーブル1
2
spam
=
{
'cat'
:
'Zophie'
,
'dog'
:
'Basil'
,
'mouse'
:
'Whiskers'
}
print
(
'The name of my pet zebra is '
+
spam[
'zebra'
])
12) Pythonのキーワードを変数名として使おうとしている(結果は "SyntaxError: invalid syntax" )。
Pythonのキーを変数名として使用することはできず、以下のようなコードでエラーが発生します。
<テーブル1
class
=
'algebra'
Python3のキーワードは、and, as, assert, break, class, continue, def, del, elif, else, except, False, finally, for, global, if, import, in, is, lambda, None , nonlocal, not, or, pass, raise, return, true, try, while, with, yieldです。
13) 定義されたnew変数でvalue-added演算子を使用(結果は "NameError: name 'foobar' is not defined" です)。
0や空文字列を初期値として変数を宣言してはいけません。自己増加演算子を使ったspam += 1という文は、spam = spam + 1と同等であり、spamには有効な初期値の指定が必要であることを意味します。
などのコードでエラーが発生します。
<テーブル1
2
3
spam
=
0
spam
+
=
42
eggs
+
=
42
14) ローカル変数と同名のグローバル変数が存在する場合、定義する前に関数内でローカル変数を使用する(結果は "UnboundLocalError: local variable 'foobar' referenced before assignment " となる)。
同じ名前のグローバル変数を持つ関数内でローカル変数を使うのは複雑ですが、ルールは「関数内で定義されたものは、その関数の中だけで使われるならローカル、そうでないならグローバル」です。
つまり、定義する前の関数でグローバル変数として使うことはできないのです。
などのコードでエラーが発生します。
<テーブル1
2
3
4
5
someVar
=
42
def
myFunction():
print
(someVar)
someVar
=
100
myFunction()
15) 整数のリストを作成するために range() を使用しようとしています (結果は "TypeError: 'range' object does not support item assignment" です)。
整数の順序付きリストを得たいときがあります。このリストを生成するのに range() は良い方法のように思えます。しかし、range() は実際のリストの値ではなく、 "rangeオブジェクト"を返すということを覚えておく必要があります。
などのコードでエラーが発生します。
<テーブル1
2
spam
=
range
(
10
)
spam[
4
]
=
-
1
もしかしたら、これがやりたいことなのかもしれませんね。
<テーブル1
2
spam
=
list
(
range
(
10
))
spam[
4
]
=
-
1
(注意: Python 2 では range() がリストの値を返すので、spam = range(10) は動作しますが、Python 3 では上記のエラーが発生します)
16) ++や--の自己減算演算子も悪くない。(結果、"SyntaxError: invalid syntax"となる)
C++ , Java , PHP などの他の言語に慣れている方は、++ や -- を使って変数のインクリメントやデクリメントを試してみるとよいでしょう。Pythonにはそのような演算子はありません。
このエラーは、次のようなコードで発生します。
<テーブル1
2
spam
=
1
spam
+
+
もしかしたら、これがやりたいことかもしれません。
<テーブル1
2
spam
=
1
spam
+
=
1
17) メソッドの第1引数にself引数を追加するのを忘れた(結果: "TypeError: myMethod() takes no arguments (1 given)")
などのコードでエラーが発生します。
<テーブル
1
2
3
4
5
class
Foo():
def
myMethod():
print
(
'Hello!'
)
a
=
Foo()
a.myMethod()
18) 6行目が括弧のペアで表示されないため、次の行に表示されてしまう(結果: "SyntaxError: invalid syntax" )。
以下のコードでエラーが発生します。
<テーブル
1
2
3
4
5
def print_time(threadName,delay)。
カウント = 0
while count<5:
time.sleep(delay)
count+= 1
print "%s:%s" % (スレッド名, time.ctime(time.time()))
print "メイン開始"
--------------------- この記事は newtonnl の CSDN ブログに掲載されたもので、全文は https://blog.csdn.net/newtonnl/article/details/70792289?utm_source=copy でご覧になれます。
関連
-
Python入門 openを使ったファイルの読み書きの方法
-
[解決済み】なぜpythonは私が「venvという名前のモジュールを持っていない」と言うのですか?
-
[解決済み】ImportError: PILという名前のモジュールはありません
-
[解決済み] openpyxl'という名前のモジュールがない - Python 3.4 - Ubuntu
-
[解決済み] Python MySQLdb の問題 (TypeError: %d format: 数値が必要で、str ではありません)
-
[解決済み] グループ化されたPandasデータフレームをループオーバーする方法は?
-
[解決済み] Python : 従業員と生産労働者クラスのプログラム、私は私のエラーがどこにあるのか分からないのですか?
-
[解決済み] SQLAlchemy で `UNIQUE` 制約をモデル化するには?
-
[解決済み] scipy.interpolateが入力範囲を超えて外挿された結果を与えるようにするには?
-
[解決済み] Pythonでリストをフォーマットして各要素を別行動で表示するには?[重複]。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】RuntimeWarning: 割り算で無効な値が発生しました。
-
[解決済み】python "TypeError: 'numpy.float64' object cannot be interpreted as an integer" (タイプエラー: 'numpy.float64' オブジェクトは整数として解釈できません。
-
[解決済み】「WindowsError: [エラー2]システムが指定されたファイルを見つけることができません」が解決されない
-
Python は tempfile パッケージを使用してコードを簡単にトレースなしで実行します。
-
[解決済み] Pytorchはワンホットベクターをサポートしないのですか?
-
[解決済み] scikit-learnのcross_val_predictの精度スコアはどのように計算されるのですか?
-
[解決済み] matlabのfminsearchのnumpy/scipyアナログ版
-
[解決済み] Pythonで関数をforward-declare/prototypeする方法は?[重複している]をクリックします。
-
完璧な解決策 ERROR: EnvironmentError のため、パッケージをインストールできませんでした。[WinError 5] アクセスが拒否されました。
-
PythonでBeautiful Soupのインストールに成功しても、'bs4'という名前のモジュールがない