Python には、一般的なエラーが発生したときに発生する例外が組み込まれています。これらの事前定義された例外には、Python の try-Except ブロックを使用して事前に処理できるため、利点があります。たとえば、try-excel ブロックを利用して、Python で ValueError 例外を管理できます。この記事では、Python で Valueerror 例外が発生および解決するためのいくつかの方法と理由を説明します。
Python の ValueError とは何ですか?
ValueError 例外は、次の場合によく発生します。 パイソン 無効な値が変数に割り当てられた場合、または関数の呼び出し中に関数に渡された場合。また、シーケンス データ型のアンパック中や関数で return ステートメントを使用するときにもよく発生します。
構文:
ValueError: could not convert string to float: 'techcodeview.com'>
Python で ValueError が発生するのはなぜですか?
ValueError が発生する一般的な理由は次のとおりです。
- 無効な引数
- 間違った使用法 数学モジュール
- 開梱する 反復可能なオブジェクト
無効な引数
ValueError は通常、無効な引数を Python の関数に渡すときに発生します。例として、Python の float() 関数は数値を受け取り、それを float 値に変換します。ただし、この関数に文字列を渡すと、当然のことながら Python で文字列を float に変換することはできないため、ValueError が発生します。
Python3
a>=> 34> b>=> 'techcodeview.com'> #works normally> print>(>float>(a))> #leads to the valueerror> print>(>float>(b))> |
>
>
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 8, in print(float(b)) ValueError: could not convert string to float: 'techcodeview.com'>
数学モジュールの間違った使用
Python で Math モジュールを操作しているときに、ValueError 例外が頻繁に発生します。これは、特定の関数の有効な引数を認識していない可能性があるためです。例として、Math モジュールの math.factorial() 関数は、指定された数値の階乗を返します。ただし、誰かがこの関数に負の値を渡そうとすると、必ず ValueError が発生します。
Python3
import> math> print>(math.factorial(>->3>))> |
リストするJava配列
>
>
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 3, in print(math.factorial(-3)) ValueError: factorial() not defined for negative values>
反復可能なオブジェクトの解凍
リスト、タプル、辞書などの Python の反復可能なオブジェクトはループできます。反復可能オブジェクトの値を個々の変数に割り当てるアンパックは、一般的な操作です。指定する変数の数が多かったり少なかったりすると、ValueError などのエラーが発生します。たとえば、以下の例では、3 つの項目を含むリストが 4 つの変数を使用して展開され、ValueError が発生します。
Python3
my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c, d>=> my_list> print>(a)> print>(b)> print>(c)> |
>
>
Hangup (SIGHUP) Traceback (most recent call last): File 'Solution.py', line 2, in a, b, c, d = my_list ValueError: not enough values to unpack (expected 4, got 3)>
Valueerror 例外を解決するためのアプローチと理由
以下は、Python で Valueerror 例外を解決する方法です。
- Try-Except ブロックの使用
- コードを修正する
- 正しい数の変数を使用する
Try-Except ブロックの使用
以下のコードは、「float()」関数を使用して数値 (「a」) と数値以外の文字列 (「b」) を浮動小数点に変換しようとします。 Try-Except ブロックは、非数値文字列の変換中に発生する可能性のある潜在的な `ValueError` をキャッチするために使用されます。このようなエラーが発生した場合、文字列を浮動小数点に変換できないことを示す明確なエラー メッセージが出力されます。
スプリングフレームワーク
Python3
a>=> 34> b>=> 'techcodeview.com'> try>:> ># works normally> >print>(>float>(a))> ># may lead to ValueError, so use try-except> >print>(>float>(b))> except> ValueError:> >print>(>'Error: Unable to convert the string to a float.'>)> |
>
>
出力:
34.0 Error: Unable to convert the string to a float.>
コードを修正する
以下のコードは、値を上げずに 3 の階乗を計算します。ValueError>。負の入力の場合を処理する必要がある場合は、関数を呼び出す前に入力が有効であることを確認するチェックを追加するとよいでしょう。math.factorial>関数。
Python3
import> math> print>(math.factorial(>3>))> |
>
>
出力:
6>
正しい数の変数を使用する
アンパック リストの Valueerror 例外を解決するには、正しい数の変数を使用してリストをアンパックする必要があります。リストに 3 つの要素がある場合は、3 つの変数を使用する必要があります。修正されたコードは次のとおりです。
Python3
my_list>=> [>'Geeks'>,>'for'>,>'Geeks'>]> a, b, c>=> my_list># Use three variables instead of four> print>(a)> print>(b)> print>(c)> |
>
データベースの正規化
>
出力
Geeks for Geeks>
結論
結論として、Python で ValueError 例外を解決するには、入力データを注意深く検査し、予期される形式との互換性を確保する必要があります。 Try-Except ブロックや条件ステートメントなどの適切な検証手法を採用すると、潜在的な問題を事前に検出して処理するのに役立ちます。入力の解析と検証に組み込み関数とライブラリを利用すると、コードの堅牢性がさらに強化されます。