1) if 、 elif 、 else 、 for 、 while 、 class 、 def ステートメントの最後に : を追加するのを忘れました (「SyntaxError: 無効な構文」が発生します)
このエラーは、次のようなコードで発生します:
if spam== 42 print('Hello!')
2) == の代わりに = を使用します (「SyntaxError: 無効な構文」が発生します)
= は代入演算子、== は等価比較演算子です。次のコードでエラーが発生します:
if spam= 42: print('Hello!')
3) インデントの間違った使用。 (「IndentationError: 予期しないインデント」、「IndentationError: unindent is not match any external indetation level」、および「IndentationError: Expected an indented block」が発生します)
インデントの増加は: で終わるステートメントの後にのみ使用され、その後は以前のインデント形式を復元する必要があることに注意してください。次のコードでエラーが発生します:
print('Hello!') print('Howdy!') 或者: if spam== 42: print('Hello!') print('Howdy!') 或者: if spam== 42: print('Hello!')
4) for ループ ステートメントで len() を呼び出すのを忘れました (「TypeError: 'list' オブジェクトを整数として解釈できません」という結果になります)
通常、インデックスによってリストまたは文字列の要素を反復処理する必要があり、これには range() 関数を呼び出す必要があります。リストの代わりに len 値を返すようにしてください。
次のコードでエラーが発生します:
spam= ['cat','dog','mouse'] for iin 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)
6) 文字列以外の値を文字列と連結しようとします (「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))
7) 文字列の先頭と末尾に引用符を追加するのを忘れました (結果として「SyntaxError: EOL while scan string literal」が発生します)
次のコードでエラーが発生します:
print(Hello!') 或者: print('Hello!) 或者: myName= 'Al' print('My name is ' + myName+ . How are you?')
8) 変数または関数名のスペルが間違っています (「名前エラー: 名前 'foaba' が定義されていません」という結果になります)
次のコードでエラーが発生します:
foobar= 'Al' print('My name is ' + fooba) 或者: spam= ruond(4.2) 或者: spam= Round(4.2)
9) メソッド名のスペルが間違っています (「AttributeError: 'str' object has no attribute ' lowerr'」という結果になります)
次のコードでエラーが発生します:
spam= 'THIS IS IN LOWERCASE.' spam= spam.lowerr()
10) 参照がリストの最大インデックスを超えています (「IndexError: リスト インデックスが範囲外です」が発生します)
次のコードでエラーが発生します:
spam= ['cat','dog','mouse'] print(spam[6])
11) 存在しない辞書キーを使用する (「KeyError: 'spam'」が発生する)
次のコードでエラーが発生します:
spam= {'cat':'Zophie','dog':'Basil','mouse':'Whiskers'} print('The name of my pet zebra is ' + spam['zebra'])
12) 変数名として Python キーワードを使用してみてください (「SyntaxError: 無効な構文」が発生します)
Python キーは変数名として使用できません。このエラーは次のコードで発生します:
クラス = '代数'
Python3 のキーワードは、and、as、assert、break、class、 continue、def、del、elif、else、excel、False、finally、for、from、global、if、import、in、is、lambda、None、非ローカル、not、or、pass、raise、return、True、try、while、with、yield
13) 定義された新しい変数でインクリメント演算子を使用する (「NameError: 名前 'foobar' が定義されていません」という結果になります)
変数を宣言するときは、初期値として 0 または空の文字列を使用しないでください。このように、インクリメント演算子を使用した文 spam += 1 は spam = spam + 1 と等しくなります。これは、spam が指定する必要があることを意味します。有効な初期値。
次のコードでエラーが発生します:
spam= 0 spam+= 42 eggs+= 42
14) ローカル変数を定義する前に関数内でローカル変数を使用します (ローカル変数と同じ名前のグローバル変数があります) (結果として「UnboundLocalError: local variable 'foobar' Referenced before assigning」が発生します)
同じ名前のグローバル変数がある場合、関数内でローカル変数を使用するのは非常に複雑です。使用規則は、関数内で何かが定義されている場合、関数内でのみ使用される場合です。その反対はグローバル変数です。
これは、定義する前に関数内でグローバル変数として使用できないことを意味します。
次のコードでエラーが発生します:
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
(注: spam = range(10) は、Python 2 では range() がリスト値を返すため機能しますが、Python 3 では上記のエラーが発生します)
16) 良いアイデアは、++ または -- インクリメント演算子とデクリメント演算子です。 (「SyntaxError: 無効な構文」が発生します)
如果你习惯于例如 C++ , Java , PHP 等其他的语言,也许你会想要尝试使用 ++ 或者 -- 自增自减一个变量。在Python中是没有这样的操作符的。
该错误发生在如下代码中:
spam= 1 spam++
也许这才是你想做的:
spam= 1 spam+= 1
17)忘记为方法的第一个参数添加self参数(导致“TypeError: myMethod() takes no arguments (1 given)”)
该错误发生在如下代码中:
class Foo(): def myMethod(): print('Hello!') a= Foo() a.myMethod()