为什么会出现错误而没有呢?

时间:2018-10-15 10:20:06

标签: python python-2.7

我正在解决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))

1 个答案:

答案 0 :(得分:0)

if length <= 1:
    pass

pass实际上不执行任何操作,因此此检查不执行任何操作。无论length<= 1还是不是int(s[length/2:]),您都将继续进行return False,如果字符串 太短,则会产生上述错误。 / p>

但是,{{1}}会退出该函数,并且以下代码将不会执行,因此check保护了您避免尝试处理短字符串。