ホームページ  >  記事  >  バックエンド開発  >  初心者が Python を学習する際によくある間違いのまとめ

初心者が Python を学習する際によくある間違いのまとめ

怪我咯
怪我咯オリジナル
2017-04-06 11:48:141220ブラウズ

私は最近 Python を学び、よくある間違いを以下にまとめました:

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' object can be inspired as an integer」が発生します) ") 通常、インデックスによってリストまたは文字列の要素を反復処理する必要があり、それには range() 関数を呼び出す必要があります。リストの代わりに len 値を返すようにしてください。このエラーは次のコードで発生します:

spam = ['cat', 'dog', 'mouse'] 
for i in range(spam): 
     print(spam[i])

5) 文字列の値を変更しようとします (「TypeError: 'str' オブジェクトは項目の割り当てをサポートしていません」という結果になります) 文字列は不変のデータ型です。 このエラーは次の場合に発生します。コード:

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 scanning」が発生します)文字列リテラル") このエラーは次のコードで発生します :

print(Hello!') 或者: print('Hello!)

または :

myName = 'Al' print('My name is ' + myName + . How are you?')

8) 変数または関数名のスペルが間違っています (「NameError: name 'foaba' is not generated」という結果になります) このエラーは次のコードで発生します。次のコード:

foobar = 'Al' print('My name is ' + fooba)
 或者:
spam = ruond(4.2) 
或者: 
spam = Round(4.2)

9) メソッド名のスペルが間違っています (結果として「NameError: name 'foaba' is not generated」)、「AttributeError: 'str' object has noattribute ' 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 キーは変数として使用できませんこのエラーは次のコードで発生します:

class = 'algebra'

Python3 のキーワードは次のとおりです: and、as、assert、break、class、 continue、def、del、elif、else、excel、False、finally、for、from、global 、if、import、in、is、lambda、None、nonlocal、not、or、pass、raise、return、True、try、while、with、yield

13) in 新しい変数を定義するときにインクリメント演算子を使用します (結果「NameError: 名前 'foobar' が定義されていません」)。変数を宣言するときに初期値として 0 または空の文字列を使用しないでください。そのため、インクリメント演算子 spam += 1 を使用してください。これは spam = spam + 1 と同等です。スパムには有効な初期値を指定する必要があります。このエラーは次のコードで発生します:

spam = 0 
spam += 42 
eggs += 42

14) ローカル変数を定義する前に関数でローカル変数を使用すると (この時点ではローカル変数と同じ名前のグローバル変数が存在します) (結果として「UnboundLocalError: local」が発生します)代入前に変数 '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() はリストを返すためです。値を指定しますが、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()


 

以上が初心者が Python を学習する際によくある間違いのまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。