僕たちの失敗 ~Pythonエラーコード集~

僕たちの失敗 ~Pythonエラーコード集~

いままでやらかした、エラーコードを集めていきます。
今後もどんどん増える予定

いままで発生させたエラー集です。
自分の備忘録に近いので、見づらいかと思います。
公開はしてますので、万が一誰かの参考になれば幸いです。
※あくまでも私が体験し解決したものです。こうすればOKかもしれない程度に参考にして下さい。

float() argument must be a string or a number, not ‘NoneType’

内容:NoneType(値なし)にfloat()を使用している。
解決法:float()を使用して良いのは、数字(2.3)か数字の文字列(’2.3′)

ModuleNotFoundError: No module named ‘xxx’

内容:’xxx’という名前のモジュールがない
解決法:①名前入れ間違えの場合は修正 
    ②xxxが通常のモジュールではない場合はインストールしてから使う

name ‘ XXX’ is not defined

内容:文字列’xxx’が定義されていない状態で計算等に使用されている。
解決法:必要なら計算より前で定義(xxx=12など)。
    現時点で不要であるが定義する場合、「XXX = 0」「xxx(#list) =[]」などで定義

numpy.linalg.LinAlgError: 1-dimensional array

内容:numpy.linalg.solveで連立方程式を解こうとしたときに発生、解けない値をインプットした。
解決法:左辺の数=左辺の変数の数=右辺の数になっている必要がある。

from numpy.linalg import solve
left = [[1,2,3],[4,5,6],[7,8,9] #左辺の数=[]の数=3、左辺の変数の数 =[]内の数字= 3
right = [1,2,3] #右辺の数 = []内の数字 =3
solve(left, right)

OSError: [Errno 22] Invalid argument: ‘\u202aC:/Users/XXXXXX.csv’

内容:with orenでローカルフォルダのcsvを開こうとした際に発生。
解決法:パスをコピペしたときに「表示では見えない何か」もコピーしてしまった。手入力で解決。

SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 12-13: truncated \UXXXXXXXX escape

内容:with orenでローカルフォルダのcsvを開こうとした際に発生。C:\~\と入力
解決法:ファイルのパスはC:/~/が正しい。¥(バックスラッシュ)ではなく/(スラッシュ)で区切る

SyntaxError: ‘break’ outside loop

内容:whileのループを止めるbreakが、whileの外に存在する。こんな感じ

while True:
    if~
break

解決法:breakはwhile(またはfor)の構文内に置く。

SyntaxError: invalid character in identifier

内容:文字列の片側に「’」をつけ忘れた。
解決法:必要な「’」を探してつける。

SyntaxError: invalid syntax

内容:ifやwhileなどの文末に「:」を忘れた。
解決法:if、while、defなどの文末には「:」をつける。

TypeError: expected string or bytes-like object

内容:文字列(str)が求められているところに数字(int)をいれた。
   bytes-like objectはいまいち分からん・・・ 
   自分が発生させたのは、正規表現で数字を判定対象とした。

re.match(\d, 1)


解決法:エラーが出ているところの数字をstr()等で文字列に変換する。

TypeError: unsupported operand type(s) for *: ‘NoneType’ and ‘float’

内容:四則演算の値にNoneType(値なし)が存在
解決法:どれが値なしかを探す。type()でその文字列がint、float等の型を判定できる。

UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0x89 in position 3: invalid start byte

内容:csvファイルを読み込む際に発生。(具体的には百人一首のcsvファイル)
解決法:文字コードutf-8で開けなかった。encoding = ‘shift_jis’や’cp932’を試してみる。 

ValueError: invalid literal for int() with base 10: ‘XXX’

内容:input()で入力時に整数にで受け取りたい。int(input())として小数(xxx)を入力した。
解決法:小数を入力しない。または、try/ except や if/elseでエラー発生時の処理を決める。

ZeroDivisionError: division by zero

内容:0で割ってしまっている。下のようなパターンで引っかかった。

list_a = []
b =70
c = b/len(list_a)
for row in x:
    list_a.append(row)

つまり、最終的には0で割らなくても、0で割ってしまっているパターンがある。
解決法:0で割る瞬間がないようにする。特に文字で割っているものは注意。
閑話休題:「ゼロで割る」というと現代SFの重要作家テッド・チャンの短編を思い出します。
「ゼロで割る」が解をもつことを証明してしまった数学者。数学が、世界が崩れ去った世界で数学者は何を見るのか。

タイトルとURLをコピーしました