Python ValueError для кода, который вычисляет правильные результаты - PullRequest
0 голосов
/ 24 ноября 2018

Постановка задачи

Если задано целое число n, найдите два целых числа a и b, таких, что

#a >= 0 and b >= 0
#a + b = n
#DigitSum(a) + Digitsum(b) is maximum of all possibilities

def solve(n): 

    len_of_n = len(str(n))
    len_of_n-=1
    a = '9'
    a = (a*len_of_n)
    #print(a)
    b = (int(n) - int(a) )  # This is the line where it points to error.
    #print(b)

    digits_of_a = []
    digits_of_b = []
    for i in str(a)[::-1]:
         digits_of_a.append(int(i))   
    for i in str(b)[::-1]:
         digits_of_b.append(int(i))

    return (sum(digits_of_a) + sum(digits_of_b))

Код фактически сообщает о правильных ответах на тестовые случаи при «попытках» в кодовых войнах.ком, но не удается окончательное представление.Он завершается с кодом ошибки 1. Он говорит ValueError: неверный литерал для int () с основанием 10: ''

Я прочитал эту другую ветку по этому вопросу и понимаю, что ошибка происходит из-за попытки преобразования пробелав целое число.Не могу понять, почему это утверждение получило космический характер.Они оба являются int представлениями строки ...?

1 Ответ

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

Когда вы передаете в функцию одну цифру int, вы получаете эту ошибку, потому что len_of_n = len(str(n)) будет равно 1, а len_of_n-=1 будет равно 0. 0 * '9' даст вам пустую строку, которая не может быть преобразованак инт.Таким образом, вы получите ошибку

недопустимый литерал для int () с основанием 10: ''

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