Pythonista を始めたばかりの人にとって、学習プロセス中にコードを実行するときに多かれ少なかれエラーが発生し、最初は難しく感じるかもしれません。コードの量が蓄積すると、練習すれば完璧になり、実行時エラーが発生したときに元の問題をすぐに特定できるようになります。以下に 17 個のよくあるエラーをまとめました。作成したコードにこれらのエラーがなければ、Python スキルはより高いレベルに達します。つまり、Python 開発者の資格を取得すると、「 は も書けない」というような間違いを犯す可能性があります。
無料学習の推奨事項: Python ビデオ チュートリアル
1,
if、for のことは忘れてください。 def、elif、else、class などの宣言の最後に :
を追加すると、次のように「SyntaxError: 無効な構文」が発生します:if spam == 42 print('Hello!')
if spam = 42: print('Hello!')
print('Hello!') print('Howdy!')
if spam == 42: print('Hello!') print('Howdy!')
#原因「TypeError: 'list' オブジェクトを整数として解釈できません」
通常、インデックスによってリストまたは文字列の要素を反復する必要があり、これには range() 関数を呼び出す必要があります。リストの代わりに len 値を返すようにしてください。
このエラーは次のコードで発生します:
spam = ['cat', 'dog', 'mouse'] for i in range(spam): print(spam[i])
5,
文字列の値を変更しようとすると、次の結果が発生します。 「TypeError: 'str' オブジェクトは項目の割り当てをサポートしていません」
string は不変のデータ型です。このエラーは次のコードで発生します:
spam = 'I have a pet cat.' spam[13] = 'r' print(spam)
正しいアプローチは次のとおりです:
spam = 'I have a pet cat.' spam = spam[:13] + 'r' + spam[14:] print(spam)
文字列以外の値を文字列と連結しようとすると、
結果は「TypeError: 'int' オブジェクトを暗黙的に str に変換できません」 "
このエラーは次のコードで発生します:
numEggs = 12 print('I have ' + numEggs + ' eggs.')
正しいアプローチは次のとおりです:
numEggs = 12 print('I have ' + str(numEggs) + ' eggs.') numEggs = 12 print('I have %s eggs.' % (numEggs))
Forgot at文字列の先頭と末尾 引用符を追加すると
結果は「SyntaxError: EOL while scan string literal」
次のコードでエラーが発生します:
print(Hello!') print('Hello!) myName = 'Al' print('My name is ' + myName + . How are you?')
変数名または関数名のスペル エラー
結果は「NameError: 名前 'foaba' が定義されていません」になります。
このエラーは次のコードで発生します。 :
foobar = 'Al' print('My name is ' + fooba) spam = ruond(4.2) spam = Round(4.2)
メソッド名のスペルが間違っています
「属性エラー: 'str' オブジェクトには属性 ' lowerr' がありません」が発生します。
このエラーは次のコードで発生します:
spam = 'THIS IS IN LOWERCASE.' spam = spam.lowerr()
参照がリストの最大インデックスを超えています
結果「IndexError: リスト インデックスが範囲外です」
This エラーは次のコードで発生します:
spam = ['cat', 'dog', 'mouse'] print(spam[6])
非存在する辞書キー値
# の結果は「KeyError: 'spam'」
このエラーは次のコードで発生します:
spam = {'cat': 'Zophie', 'dog': 'Basil', 'mouse': 'Whiskers'} print('The name of my pet zebra is ' + spam['zebra'])
Python キーワードを変数名として使用しようとすると
# 結果は「SyntaxError:無効な構文」になりますPython キーは変数名として使用できません。このエラーは次のコードで発生します。class = 'algebra' Python3的关键字有: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,
新しい変数を定義するときに付加価値演算子を使用すると、
結果は「NameError: name 'foobar' is」になります。定義されていません" 変数を宣言するときに初期値として 0 または空の文字列を使用しないでください。自動的に使用してください。インクリメント演算子の文 spam = 1 は spam = spam 1 と等価です。これは、次のことを意味します。スパムには有効な初期値を指定する必要があります。 このエラーは次のコードで発生します:spam = 0 spam += 42 eggs += 42
14,
ローカル変数を定義する前に関数内で使用してください (現時点では、ローカル変数と同じ名前のグローバル変数が存在します)
「UnboundLocalError: 割り当て前にローカル変数 'foobar' が参照されました」が発生する ローカル変数が関数とグローバル変数で使用されている場合同じ名前の変数が同時に存在する 非常に複雑です 使用規則は、関数内で定義されているものは関数内でのみ使用されている場合はローカル変数、それ以外の場合はグローバル変数です。 これは、定義する前に関数内でグローバル変数として使用できないことを意味します。 このエラーは次のコードで発生します:someVar = 42 def myFunction(): print(someVar) someVar = 100 myFunction()
15,
range() を使用して整数のリストを作成しようとしています
結果「TypeError: 'range' オブジェクトは項目の割り当てをサポートしていません」整数の順序付きリストを取得したい場合があるため、 range() はこのリストを生成する良い方法のように思えます。ただし、 range() は実際のリスト値ではなく、「範囲オブジェクト」を返すことに注意する必要があります。 このエラーは次のコードで発生します:spam = range(10) spam[4] = -1 正确写法: spam = list(range(10)) spam[4] = -1
(注意:在 Python 2 中 spam = range(10) 是能行的,因为在 Python 2 中 range() 返回的是list值,但是在 Python 3 中就会产生以上错误)
16、
不存在 ++ 或者 -- 自增自减操作符。
导致“SyntaxError: invalid syntax”
如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 -- 自增自减一个变量。在Python中是没有这样的操作符的。
该错误发生在如下代码中:
spam = 1spam++ 正确写法: spam = 1spam += 1
17、
忘记为方法的第一个参数添加self参数
导致“TypeError: myMethod() takes no arguments (1 given)”
该错误发生在如下代码中:
class Foo(): def myMethod(): print('Hello!') a = Foo() a.myMethod()
相关免费学习推荐:python教程(视频)
以上がPython の専門家でも書けない間違いをいくつか見てみましょうの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。