ValueError: アンパックする値が多すぎます
-
Python の
ValueError
とは -
Python の
ValueError: unpack する値が多すぎます
を修正する -
Python で
Try-Catch
を使用して例外ValueError: unpack する値が多すぎます
を処理する
ValueError: unpack する値が多すぎます
は、代入演算子 =
の左側の変数が代入演算子 =
の右側の値と等しくない場合に発生することがあります。
これは、単一の input
ステートメントでユーザーから複数の入力を取得しようとしたり、等しくない変数をいくつかの値に割り当てようとしたりするときによく発生します。
Python の ValueError
とは
ValueError
は Python の一般的な例外で、値の数が変数の数と一致しない場合に、入力、直接代入、または配列を介して発生します。 ValueError
を理解するために、例を挙げてみましょう。
コード例:
# take two string values as input separated by a comma
x, y = input("Enter x and y: ").split(",")
出力:
Eneter x and y: 3,2,1
ValueError: too many values to unpack (expected 2)
上記のコードでわかるように、x
と y
の 2つの入力を使用しています。 input
ステートメントは、コンマ ,
で区切られた 2つの値を想定しています。
ただし、この場合、トピックを示すために 3つの値を入力として提供したため、ValueError: too many values to unpack
がスローされました。
ValueError: unpack する値が多すぎます
の別のケースは、変数に値を直接割り当てている可能性があります。 例を通してそれを理解しましょう。
a, b = 2, 3, 5 # ValueError: too many values to unpack (expected 2)
a, b, c = 2, 3 # ValueError: not enough values to unpack (expected 3, got 2)
a, b = [3, 2, 1] # ValueError: too many values to unpack (expected 2)
上記は、ValueError
をスローする他のいくつかのケースです。
Python の ValueError: unpack する値が多すぎます
を修正する
ValueError
を回避するには、input
ステートメント、list
、または array
のいずれかで期待される値の正確な数を指定する必要があります。 ベスト プラクティスは、try-catch
ブロックを使用し、ユーザーに案内するメッセージを表示することです。
ValueError: unpack する値が多すぎます
を修正する方法を理解しましょう。
# User message --> Enter the two numbers to add ::
a, b = input("Enter two numbers to add :: ").split(",")
# type casting a and b
a = int(a)
b = int(b)
print("The sum of the two numbers is :: ", a + b)
出力:
Enter two numbers to add :: 22,23
The sum of the two numbers is :: 45
Python で Try-Catch
を使用して例外 ValueError: unpack する値が多すぎます
を処理する
他のほとんどすべてのプログラミング言語には、例外処理のための try-catch
メカニズムがあります。 例外処理は、プログラムをクラッシュさせる前にエラーまたは例外を制御し、エラーの性質と原因を表示するのに役立つ予防的なメカニズムです。
また、メッセージを表示して例外を解釈することもできます。
例を通してそれを理解しましょう。
try:
# User message --> Enter the two numbers to add ::
x, y = input("Enter two numbers to add :: ").split(",")
# type casting x and y
x = int(x)
y = int(y)
print("The sum of the two numbers is :: ", x + y)
except ValueError as v:
print(
"Oops! Looks like you have enter an invalid number of input"
+ "\nPlease enter two numbers to add"
)
print("ValueError:", v)
print("\nWow! The program is not crashed.")
出力:
Enter two numbers to add :: 1,2,3
Oops! Looks like you have enter an invalid number of input
Please enter two numbers to add
ValueError: too many values to unpack (expected 2)
Wow! The program is not crashed.
ご覧のとおり、上記のプログラムは失敗し、ValueError
が発生しますが、プログラムはまだクラッシュしていないことに注意してください。
try
ブロックのコードが ValueError
例外を引き起こしたことがわかります。行でクラッシュする代わりに、try
ブロックはエラーを except
ブロックに渡し、例外を解釈して表示します。 ユーザーへのカスタマイズされたメッセージ。 カスタマイズされたメッセージは、エラーを簡単に解釈するのに役立ちます。
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn関連記事 - Python Error
- AttributeError の解決: 'list' オブジェクト属性 'append' は読み取り専用です
- AttributeError の解決: Python で 'Nonetype' オブジェクトに属性 'Group' がありません
- AttributeError: 'generator' オブジェクトに Python の 'next' 属性がありません
- AttributeError: 'numpy.ndarray' オブジェクトに Python の 'Append' 属性がありません
- AttributeError: Int オブジェクトに属性がありません
- AttributeError: Python で 'Dict' オブジェクトに属性 'Append' がありません