ホームページ  >  記事  >  バックエンド開発  >  初心者が Python を実行する際に犯しやすい 17 の間違いのまとめ

初心者が Python を実行する際に犯しやすい 17 の間違いのまとめ

WBOY
WBOYオリジナル
2016-06-16 08:47:011043ブラウズ

1) if、elif、else、for、while、class、def ステートメントの最後に追加するのを忘れました: (「SyntaxError: 無効な構文」が発生します): (「SyntaxError: 無効な構文」が発生します)
このエラー次のようなコードで発生します:

Copy code コードは次のとおりです:

if spam == 42
print('Hello!')

2 ) == の代わりに = を使用します (「SyntaxError: 無効な構文」が発生します)
= は代入演算子、== は等価です比較演算子。次のコードでエラーが発生します:
コードをコピー コードは次のとおりです:

スパム = 42 の場合:
print( 'Hello!')

3) インデントの使い方が間違っています。 (「IndentationError: 予期しないインデント」、「IndentationError: unindent is not match any external indetation level」、および「IndentationError: Expect an indented block」が発生します)
インデントの増加は、: で終わるステートメントの後にのみ使用されることに注意してください。その後、以前のインデント形式に戻す必要があります。エラーは次のコードで発生します:
コードをコピー コードは次のとおりです:

print('Hello!')
print('Howdy!')
または:
スパム == 42 の場合:
print('Hello!')
print('Howdy!')
または:
if spam == 42:
print('Hello!')

4) for ループ ステートメントで len() を呼び出すのを忘れました (結果として「TypeError: 'list' object」が発生します)整数として解釈できません。」)
通常、インデックスによってリストまたは文字列の要素を反復する必要があり、これには range() 関数を呼び出す必要があります。リストの代わりに len 値を返すようにしてください。
次のコードでエラーが発生します:
コードをコピー コードは次のとおりです:

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

5) 文字列の値を変更してみます(結果は「TypeError: 'str' object doesn't support item assign」)
string は不変のデータ型です。このエラーは次のコードで発生します:
コードをコピー コードは次のとおりです:

spam = '私はペットの猫を飼っています。'
spam[13] = 'r'
print(spam)

実際にこれを実行したいとします:
コードをコピーします コードは次のとおりです:

spam = '私はペットの猫を飼っています。 '
spam = spam[:13] + 'r' + spam[14:]
print(spam)

6) 試してください文字列以外の値を文字列と連結します (結果として「TypeError: 'int' オブジェクトを str に暗黙的に変換できません」が発生します)
次のコードでエラーが発生します:
コードをコピー コードは次のとおりです:

numEggs = 12
print('私は ' + numEggs + ' 卵を持っています。')

実際にやりたいことは次のとおりです:
コードをコピー コードは次のとおりです:

numEggs = 12
print('私は ' + str(numEggs) + ' 卵を持っています。' )
または:
numEggs = 12
print('私は %s 個の卵を持っています。' % (numEggs))

7) 文字列の先頭と末尾に引用符を追加するのを忘れました (結果として「SyntaxError: EOL while scan string literal」が発生します)
次のコードでエラーが発生します:
コードをコピー コードは次のとおりです:

print(Hello!')
または:
print('Hello !)
または:
myName = 'Al'
print('私の名前は ' + myName + . お元気ですか?')

8) 変数または関数名スペル エラー (「NameError: 名前 'foaba' が定義されていません」という結果になります)
このエラーは次のコードで発生します:
コードをコピー コードは次のとおりです:

foobar = 'Al'
print('My name is ' + foaba)
または:
spam = ruond(4.2)
または:
spam = Round(4.2)

9) メソッド名のスペルが間違っています (「AttributeError: 'str' object has no attribute ' lowerr'」という結果になります)
エラーは次の場所で発生します。次のコード:
コードをコピー コードは次のとおりです:

spam = 'これは小文字です。' >spam = spam. lowerr()

10) 参照がリストの最大インデックスを超えています (「IndexError: list Index out of range」が発生します)
次のコードでエラーが発生します:

コードをコピー コードは次のとおりです:
spam = ['cat', 'dog ', 'mouse' ]
print(spam[6])

11) 存在しない辞書キー値を使用します (「KeyError: 'spam'」が発生します)
このエラーは次の場合に発生しますコード:

コードをコピー コードは次のとおりです:
spam = {'cat': 'Zophie', 'dog ': 'バジル', 'マウス': 'ひげ'}
print('私のペットのシマウマの名前は ' + spam['zebra'])


12) Python キーワードを変数名として使用しようとしました (「SyntaxError: 無効な構文」が発生します)

Python キーワードは変数名として使用できません。

コードをコピー コードは次のとおりです:class = 'algebra'
Python3 のキーワードは次のとおりです: and, as 、アサート、ブレーク、クラス、続行、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) 新しい変数定義でインクリメント演算子を使用します (結果として、「NameError: name 'foobar' が定義されていません」が発生します)

変数を宣言しないでください。初期値として 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 ではスパム) = range(10) は機能します。Python 2 では range() はリスト値を返しますが、Python 3 では上記のエラーが発生します)
16) ++ または -- のインクリメントとデクリメントを使用すると良いでしょう。オペレーター。 (「SyntaxError: 無効な構文」が発生します)
C++、Java、PHP などの他の言語に慣れている場合は、変数をインクリメントおよびデクリメントするために ++ または -- を使用してみるとよいでしょう。 。 Python にはそのような演算子はありません。
次のコードでエラーが発生します:

コードをコピー コードは次のとおりです:
spam = 1
spam++

おそらくこれがやりたいことです:

コードをコピーします コードは次のとおりです: spam = 1
spam += 1

17) メソッドの最初のパラメーターに self パラメーターを追加するのを忘れました (結果として、「TypeError: myMethod() は引数を取りません)」 (1 つ指定)")
次のコードでエラーが発生します:

コードをコピー コードは次のとおりです:
class Foo():
def myMethod( ):
print('Hello!')
a = Foo()
a.myMethod()

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