Как исправить неподдерживаемые типы операндов в pyinputplus? - PullRequest
0 голосов
/ 18 июня 2020

Итак, я новичок в программировании, и я слежу за учебником из онлайн-книги от "Automate The Boring Stuff". Я пытаюсь воспроизвести программу, которая в сумме дает до десяти, она работает правильно, если я ввожу один целое число, но если я введу что-то вроде 55 или 3 7, оно вернется с:

unsupported operand type(s) for +: 'int' and 'str'
import pyinputplus

def addsuptoten(num):
    numlist=list(num)
    for i, dig in enumerate(numlist):
        numlist[i]=int(dig)
        if sum(numlist) != 10:
            raise Exception('The digits must add to 10, not %s'%(sum(numlist)))
    return int(num)

response=pyinputplus.inputCustom(addsuptoten)

1 Ответ

0 голосов
/ 18 июня 2020

Входом в функцию является список строк. Проходя через него oop, вы конвертируете каждый элемент из строки в целое число на месте. Однако вы оцениваете sum(numlist) до того, как закончите преобразование. Это попытается суммировать список, содержащий как целые числа, так и строки, что дает вам это исключение.

Вы сможете решить эту проблему, преобразовав весь список, прежде чем суммировать его:

def addsuptoten(num):
    numlist=list(num)
    for i, dig in enumerate(numlist):
        numlist[i]=int(dig)
    if sum(numlist) != 10:
        raise Exception('The digits must add to 10, not %s'%(sum(numlist)))
    return int(num)

(Хотя, я полагаю, у вас есть еще одна проблема с обратной строкой).

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