【发布时间】:2019-04-26 14:48:30
【问题描述】:
问题陈述
给定一个整数 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))
代码实际上在 codewars.com 上的“尝试”上报告了测试用例的正确答案,但最终提交失败。它以错误代码 1 退出。它说 ValueError: invalid literal for int() with base 10: ''
我已经阅读了关于此的其他线程并了解错误是由于尝试将空格字符转换为整数造成的。无法弄清楚为什么该语句会获得空格字符。它们都是字符串的int表示...?
【问题讨论】:
-
遇到错误时
n和a的值是多少?它以及你传递给函数的内容是什么?我认为,最有可能的是字符串n无法转换为 int,因为它是空字符串或因为其中包含非数字字符。 -
N 已经是一个 int 为什么你要 int(n) ?
-
你有没有机会传递一个数字的值?
-
n 是传递给函数的整数。 a 是根据 n 中的总“数字”动态构建的。错误表明这是由于空字符串。但我无法弄清楚为什么/如何将具有有效 int 值 n 的空字符串传递给 def。
-
@TobiasWilfert 作为试验和错误的一部分进行了更改。最初我只有 (n - int(a)) 我不确定测试通过了哪些值引擎。 codewars 上的测试用例显示所有 8 个断言都已通过,但随后也显示此错误。所以它认为我的代码是不可接受的。下面的快照。
标签: python valueerror