我正在解决hackerrank问题:https://www.hackerrank.com/challenges/kaprekar-numbers/problem
并继续处理此错误: ValueError:以10为底的int()的无效文字:“
我的代码中的第12行错误的代码,也在工作代码中。所以我不明白为什么我的没用:(请帮助
这是我的代码:
a = input()
b = input()
l = []
for i in range(a, b + 1):
s = i*i
s = str(s)
if i == 1:
l.append(i)
length = len(s)
if length <= 1:
pass
temp = int(s[0:length/2]) + int(s[length/2:]) #error came from this line
if temp == i:
l.append(i)
else:
pass
if not l:
print "INVALID RANGE"
else:
print " ".join(map(str, l))
这是可行的方法:
def kaprekar(i):
if i == 1:
return True
s = i ** 2
s = str(s)
length = len(s)
if len(s) <= 1:
return False
temp = int(s[0:length/2]) + int(s[length/2:])
if temp == i:
return True
else:
return False
a = input()
b = input()
l = []
for i in range(a, b + 1):
if kaprekar(i):
l.append(i)
if not l:
print "INVALID RANGE"
else:
print " ".join(map(str, l))
答案 0 :(得分:0)
if length <= 1:
pass
pass
实际上不执行任何操作,因此此检查不执行任何操作。无论length
是<= 1
还是不是int(s[length/2:])
,您都将继续进行return False
,如果字符串 太短,则会产生上述错误。 / p>
但是,{{1}}会退出该函数,并且以下代码将不会执行,因此check保护了您避免尝试处理短字符串。