Pythonは初学者にとって学びやすいプログラミング言語として知られていますが、プログラミング初心者であれば誰でも犯しやすいミスが存在しています。
ここでは、情報基礎でPythonを学び始めた方々に向けて、過去の履修者でよく見られたミスを7つ紹介します。
1. 全角文字・スペースの混入
Pythonは全角文字を正しく認識しないため、プログラムの中に全角文字やスペースが混入するとエラーが発生します。このミスは英語(半角)と日本語(全角)の入力環境が混在している場合によく見られ、普段日本語使用している大半の履修者が該当します。
character = 12
print(character)
File "/Users/FITQS/character.py", line 1
character = 12
^
SyntaxError: invalid character '1' (U+FF11)
例えば、上記のコードの様に全角の数字(12)を代入しようとすると、Pythonはこれを正しく認識できず、エラーが発生します。
また、以下のような全角のスペースも同様です。
character = 12
print(character)
File "/Users/FITQS/character.py", line 1
character = 12
^
SyntaxError: invalid non-printable character U+3000
全角のスペース(characterの後)が含まれていると、Pythonはこれを空白ではなく文字として認識してしまいます。その結果、意図しない動作やエラーが発生する可能性があります。
このような問題を避けるためにはプログラムの入力や編集時には、常に半角モードを使用することが重要です。また、情報基礎が推奨するVisual Studio Codeをはじめ一部のテキストエディタでは全角文字や全角スペースを見つけてくれるプラグインもありますので、活用してみるのもよいでしょう。
Zenkaku
https://marketplace.visualstudio.com/items?itemName=mosapride.zenkaku
2. インデントの誤用
Pythonは他のプログラミング言語と異なり、インデント(通常は半角スペース4つ、あるいはタブ1つ)を使ってコードのブロックを区別します。インデントが不適切であった場合、Pythonはエラーを出力します。このエラーは、コードの見た目とは裏腹に非常に重要で、プログラム全体をエラーで停止させてしまいます。
for i in range(10):
print("pizza")
File "/Users/FITQS/quiz.py", line 2
print("pizza")
^
IndentationError: expected an indented block
上記のコードでは、for文の中身はインデントを使って区別しなければいけないはずですが、できておらずエラーになっています。
また、よく見られるものとして、コードをコピペして持ってきたときにインデントがズレてしまう事例があります。注意してください。
3. “=”と“==”の混同
Pythonにおいて、”=”は変数への値の代入を意味しますが、”==”は2つの値の等しい比較を表します。これら二つの演算子は全く異なる役割を果たすため、誤って交換すると予期しない結果を生む可能性があります。
num = 10
if num = 10:
print(num)
File "/Users/FITQS/equal.py", line 2
if a = 10:
^
SyntaxError: invalid syntax
例えば、「if num = 10:」と書いてしまうと、これは代入の操作となってしまうため、エラーが発生します。正しくは、「if num == 10:」と比較の操作を行うべきです。
4. リストのインデックスの誤解
我々の直感とは異なり、Pythonのインデックスは0から始まります。従って、リストの最初の要素にアクセスするためにはインデックス1ではなく0を使用します。
campus = ["Mita","Hiyoshi","Shonan Fujisawa"]
print(campus[3])
File "/Users/FITQS/campus.py", line 2, in <module>
print(campus[3])
IndexError: list index out of range
上記のコードでは、リストの要素が3つしかないのにもかかわらず、インデックス3(つまり、4つ目)の要素を取り出そうとしてエラーになっています。
これを理解しなければ、意図しない要素を取り出したり、インデックス外の要素を指定しようしたりするミスを犯すことになります。
5. 数値と文字列の誤解(データ型の誤解)
Pythonでは、データ型を正しく理解し管理することが非常に重要です。特に初学者が陥りがちなミスとして、数値と文字列の誤解があります。
以下に具体的な例を示します。
num1 = 3
num2 = "4"
print(num1 + num2)
File "/Users/FITQS/num.py", line 4, in <module>
print(num1 + num2)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
上記のコードでは、num1に数値の3が、num2に文字列の”4″がそれぞれ代入されています。そして最後の行で、これら二つの変数を足し合わせようとしています。しかし、Pythonでは数値と文字列を直接足し合わせることはできません。そのため、上記のコードはエラーが発生します。この問題を解決するには、文字列を数値に変換するか、逆に数値を文字列に変換する必要があります。
データ型の誤解はしばしばバグの原因となるため、データ型の扱いには注意が必要です。
6. エラーメッセージの無視
エラーメッセージは問題や誤りを特定し、解決するための道しるべです。プログラミング初学者はエラーメッセージを理解しようとせず、軽視する傾向があります。エラーメッセージが何を示しているのかを理解する様に努めれば、エラーの解決が早まるだけでなく、Pythonの上達する速度も早まるはずです。
Pythonの代表的なエラーとその対処方法について解説した投稿もありますので、ぜひそちらもお読み下さい。
Pythonの代表的なエラーとその対処方法
また、情報基礎が推奨するVisual Studio Codeには、エラー箇所を教えてくれる機能もあります。ぜひ、活用してみて下さい。