我正在解决一个黑客银行的问题: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))
pass
实际上什么都不做,所以这个检查什么都不做。无论length
是或不是<= 1
,您将继续int(s[length/2:])
,如果字符串太短,它将产生所述错误但是,
return False
退出函数,下面的代码将不会执行,因此check可以防止您尝试处理短字符串相关问题 更多 >
编程相关推荐