Python 计算正确结果的代码的 ValueError

Python ValueError for code that calculates correct results

问题陈述

给定一个整数 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))

该代码实际上在 'attempts' 上 codewars.com 上报告了测试用例的正确答案,但最终提交失败。它以错误代码 1 退出。它说 ValueError: invalid literal for int() with base 10: ''

我已经阅读了关于此的其他线程,并且了解到该错误是由于尝试将 space 字符转换为整数造成的。无法理解为什么该语句会得到 space 字符。它们都是字符串的 int 表示...?

当您将单个数字 int 传递给函数时,您会收到此错误,因为 len_of_n = len(str(n)) 将等于 1 并且 len_of_n-=1 将等于 0。0 * '9' 将为您提供一个无法转换为 int 的空字符串。因此给你错误

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