Python の専門家でも書けない間違いをいくつか見てみましょう

coldplay.xixi
リリース: 2021-02-05 17:25:36
転載
3057 人が閲覧しました

Python の専門家でも書けない間違いをいくつか見てみましょう

Pythonista を始めたばかりの人にとって、学習プロセス中にコードを実行するときに多かれ少なかれエラーが発生し、最初は難しく感じるかもしれません。コードの量が蓄積すると、練習すれば完璧になり、実行時エラーが発生したときに元の問題をすぐに特定できるようになります。以下に 17 個のよくあるエラーをまとめました。作成したコードにこれらのエラーがなければ、Python スキルはより高いレベルに達します。つまり、Python 開発者の資格を取得すると、「 も書けない」というような間違いを犯す可能性があります。

無料学習の推奨事項: Python ビデオ チュートリアル

1,

if、for のことは忘れてください。 def、elif、else、class などの宣言の最後に :

を追加すると、次のように「SyntaxError: 無効な構文」が発生します:

if spam == 42  
print('Hello!')
ログイン後にコピー
2、

==

の代わりに = を使用すると、「SyntaxError: 無効な構文」が発生します。

= は代入演算子であり、==は等価比較演算です。このエラーは次のコードで発生します:

if spam = 42:  
print('Hello!')
ログイン後にコピー
3、

インデントの不適切な使用

結果、「IndentationError: 予期しないインデント」、「 IndentationError」が発生します。 : unindent はどの外側のインデント レベルにも一致しません」および「IndentationError: Expected an indented block」

インデントの増加は、: で終わるステートメントの後にのみ使用され、その後、以前のインデントを復元する必要があることに注意してください。このエラーは次のコードで発生します:

print('Hello!') 
print('Howdy!')
ログイン後にコピー
または:

if spam == 42:  
   print('Hello!')
print('Howdy!')
ログイン後にコピー
4,

for ループで len()## を呼び出すのを忘れましたステートメント

#原因「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)
ログイン後にコピー

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,

Forgot at文字列の先頭と末尾 引用符を追加すると

結果は「SyntaxError: EOL while scan string literal」

次のコードでエラーが発生します:

print(Hello!')
  print('Hello!)
myName = 'Al'
print('My name is ' + myName + . How are you?')
ログイン後にコピー

8、

変数名または関数名のスペル エラー

結果は「NameError: 名前 'foaba' が定義されていません」になります。

このエラーは次のコードで発生します。 :

foobar = 'Al'
print('My name is ' + fooba)

spam = ruond(4.2)
spam = Round(4.2)
ログイン後にコピー

9.

メソッド名のスペルが間違っています

「属性エラー: 'str' オブジェクトには属性 ' lowerr' がありません」が発生します。

このエラーは次のコードで発生します:

spam = 'THIS IS IN LOWERCASE.'
spam = spam.lowerr()
ログイン後にコピー

10,

参照がリストの最大インデックスを超えています

結果「IndexError: リスト インデックスが範囲外です」

This エラーは次のコードで発生します:

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, 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート