python valueerror: слишком много значений для распаковки

Я новичок python . Я пытался запустить этот код:

def main():
    print ( " This program computes the average of two exam scores . ")
    score1,score2 = input ("Enter two scores separated by a comma:")
    average = (score1 + score2)/2.0
    print ("The average of the score is : " , average )

когда я вызываю main() Я получил ValueError :

ValueError: too many values to unpack (expected 2)

что не так с этим кодом ?

4 ответов


  1. вам нужно разделить вход, который вы получаете, потому что он поступает все в одной строке
  2. тогда вам нужно будет преобразовать их в числа, потому что термин score1 + score2 будет делать добавление строки в противном случае, и вы получите ошибку.

вам нужно разделить на запятую:

score1,score2 = input ("Enter two scores separated by a comma:").split(",")

обратите внимание, однако, что score1 и score2 будут струны. Вам нужно будет преобразовать их в числа, используя либо float или int (в зависимости от того, какой тип номера вы хотите).

пример:

>>> score1,score2 = input("Enter two scores separated by a comma:").split(",")
Enter two scores separated by a comma:1,2
>>> score1
'1'
>>> score1 = int(score1)
>>> score1
1
>>> score1 = float(score1)
>>> score1
1.0
>>>

входные данные поступают как одна строка. Но Python имеет раздвоение личности, когда дело доходит до строк: он может рассматривать их как одно строковое значение или как список символов. Когда вы пытались назначить score1,score2 Он решил, что вам нужен список персонажей. Очевидно, вы напечатали больше двух символов, поэтому он сказал, что у вас слишком много.

в других ответах есть отличные предложения для того, чтобы делать то, что вы действительно хотели, поэтому я не буду повторять их здесь.


Если вы используете args и даете меньше значений при запуске файла, он покажет вам эту ошибку.

* * для исправления, которые дают правильные значения**

from sys import argv

one, two, three,four,five = argv

c=input("Enter the coffee you need?: ")

print("File Name is ",one)

print("First you need ",two)

print("The you need",three)

print("Last you need",four)

print("Last but not least you need",five)

print(f"you need above mentioned items to make {c}.")


While running code give it like this: **python hm5.py milk coffeepowder sugar water**

 milk == two

 coffeepowder ==three

 sugar == four

 water == five 

 one == file name (you don't need to give it while running



My output:
Enter the coffee you need?: filter coffee

First you need  milk

The you need coffeepowder

Last you need sugar

Last but not least you need water

you need above mentioned items to make filter coffee.