ValueError: слишком много значений - PullRequest
0 голосов
/ 12 ноября 2018

Я изучаю Python. Я набрал именно то, что есть в учебнике, но он не запустится. Я думаю, что проблема в том, что учебник использует Python 2 и я использую Python 3.5. Например, учебник не использует круглые скобки после печати, и я должен, и он использует raw_input, где я использую только ввод.

Это то, что я пытаюсь запустить-

def sumProblem(x, y): 
    print ('The sum of %s and %s is %s.' % (x, y, x+y))


def main(): 
    sumProblem(2, 3) 
    sumProblem(1234567890123, 535790269358) 
    a, b = input("Enter two comma separated numbers: ") 
    sumProblem(a, b)


main()

Это ошибка, которую я получаю:

ValueError: too many values to unpack (expected 2)

Если я поставлю только два числа без запятой, это объединит их. Я попытался изменить на целое число, но выдает эту ошибку:

ValueError: invalid literal for int() with base 10: 

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

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

input(..) возвращает строку .Строка является итеративной, поэтому вы можете распаковать ее с помощью:

a, b = input("Enter two comma separated numbers: ") 

, но только если строка содержит ровно два элемента.Таким образом, для строки это означает, что строка содержит ровно два символа.

Код, однако, намекает на то, что вы хотите ввести два целых числа.Мы можем использовать str.split(), чтобы разбить строку на список «слов».

Затем мы можем выполнить пинг map с int как функцией:

def sumProblem(x, y): 
    print ('The sum of %s and %s is %s.' % (x, y, x+y))
def main(): 
    sumProblem(2, 3) 
    sumProblem(1234567890123, 535790269358) 
    a, b = <b>map(int, </b>input("Enter two comma separated numbers: ")<b>.split(','))</b>
    sumProblem(a, b)
main()
0 голосов
/ 12 ноября 2018

Ваш ввод должен выглядеть следующим образом:

a, b = map(int, input('text:').split(','))

input возвращает одну строку ввода - строку. Разбор оставлен вам.

...