PythonのValueErrorの対処方法ついて現役エンジニアが解説【初心者向け】

初心者向けにPythonのValueErrorの対処方法について現役エンジニアが解説しています。ValueErrorとは関数の引数に対して関数が処理できない値を渡してしまうことで発生するエラーです。ValueErrorの対処方法として確認事項や例外処理によるハンドリング処理の方法について解説します。

TechAcademyマガジンは受講者数No.1のオンラインプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。

PythonのValueErrorの対処方法について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

 

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

PythonのValueErrorの対処方法について詳しく説明していくね!

大石ゆかり

お願いします!

この記事では、Pythonにおける例外の1つである、ValueErrorに対する対処方法について解説します。

目次

 

ValueErrorとは

まずは、ValueErrorがどのような例外であるかについて説明します。かんたんに言ってしまうと、ValueErrorは「関数の引数についてのエラー」です。

関数は引数を渡して実行されることが多いですが、引数を渡していてもその値がおかしいために処理がうまく行かない場合があります。

そのような場合には、関数は処理ができないという事態をValueErrorを出力することで教えてくれます。

[PR] Pythonで挫折しない学習方法を動画で公開中

ValueErrorが発生する主な原因と対処方法

ValueErrorが発生する原因として挙げられるものは、数値データ(int型やfloat型)を引数に取る関数に対して、関数が処理できない数値を渡してしまう、

特定の文字列を引数に取る関数に対して、関数が対応できない文字列を渡してしまうなどです。引数として渡すデータの型は合っていても、値が適切でないことが原因です。

数値データのエラーの場合には、平方根を取るmathモジュールのsqrt()関数で、

math.sqrt(-1)

などのように負の数を引数として渡すと、

ValueError: math domain error

のようなValueErrorが出力されます。

この場合は、事前にif文などを用いて引数に渡そうとしている数値が正の数であるか確認しておくとよいでしょう。

また、文字列の場合のエラーの場合は、

float("文字列")

などのように、不適切な文字列を数値型に型変換をする際などに

ValueError: could not convert string to float: '文字列'

として出力されます。

この場合も、あらかじめ引数が適切かどうかを確認する処理を行なってから関数を実行するとよいでしょう。

ValueErrorのハンドリング処理の実装方法

関数を使う前に確認処理を行なっていても、例外が発生してしまう場合があります。

そのようなときにも、処理を中断させたくないばあいなどのために、例外処理、ハンドリング処理を実装する方法を説明しておきます。

例外処理はtry-except構文を使い、

try:
    行う処理
except 例外クラス as error:
    例外が生じたときに行う処理

などと記述します。

ValueErrorが起こったときには、

try:
    ValueErrorが起きるかもしれない処理
except ValueError as error:
    print(error)

のようにしておけば、エラーが起こったときにはそれを出力し、エラーが起きていない場合はそのまま処理を続ける、といった条件に応じた処理の分岐が可能となります。

まとめ

この記事では、PythoにおけるValueErrorのかんたんな説明と、ValueErrorのハンドリング処理について説明しました。

ハンドリング処理は非常に有用な方法であり、また、システムの開発でも重要な処理なのでぜひ覚えておいてください。

監修してくれたメンター

メンターOS

AIプログラミングを使って開発を行う。

プログラミング歴は約3年でPythonは割と得意。好きな物理理論は一般相対性理論で動物も好き。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。