Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Kaprekar numbers:I Get ValueError:基数为10'';_Python_Python 3.x_Numbers_Number Theory - Fatal编程技术网

Python Kaprekar numbers:I Get ValueError:基数为10'';

Python Kaprekar numbers:I Get ValueError:基数为10'';,python,python-3.x,numbers,number-theory,Python,Python 3.x,Numbers,Number Theory,我不知道为什么会出现这种错误。。这段代码是关于在特定的时间间隔内查找kaprekar数的 def find_kaprekar(p,q): numbers = [] for i in range(p,q): str_i = str(i) if len(str_i) % 2 == 1: midone = str_i[:int((len(str_i)+1)/2)] midtwo = str_i[int

我不知道为什么会出现这种错误。。这段代码是关于在特定的时间间隔内查找kaprekar数的

def find_kaprekar(p,q):   
    numbers = []
    for i in range(p,q):
        str_i = str(i)
        if len(str_i) % 2 == 1:
            midone = str_i[:int((len(str_i)+1)/2)]
            midtwo = str_i[int((len(str_i)+1)/2):]
            if int(midone) + int(midtwo) == i**2:
                numbers.append(i)
        elif len(str_i) % 2 == 0:
            midone = str_i[:int(len(str_i)/2)]
            midtwo = str_i[int(len(str_i)/2):]
            if int(midone) + int(midtwo) == i**2:
                numbers.append(i)

    if len(numbers) == 0:
        print('INVAlID RANGE')
    else:
        print(numbers)

if __name__ == '__main__':
    p = int(input())
    q = int(input())
    find_kaprekar(p, q)
当我运行它时,我总是得到以下信息:

    if int(midone) + int(midtwo) == i**2:
ValueError: invalid literal for int() with base 10: '
>>int(“”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ValueError:基数为10的int()的文本无效:“”
您正在抓取数字的子字符串,其中一个子字符串为空


例如,如果
p==1
midone='1'
MIDTOW='
。我不知道算法,但也许你想把空字符串当作
0

这个程序有几个问题。正如其他人指出的,在编写时,它试图将空字符串转换为整数,这会导致OP的
ValueError

更重要的是,它不输出,即其平方K可以分成两部分K'K'的数字,这样K'+K'=sqrt(K)。OP的程序似乎打算生成可分为两部分的数字JJ',以便J'+J'=J^2。除了像数字00这样似是而非的例子外,后一种数字似乎不太可能出现

下面是一个输出Kaprekar数的程序

def find_kaprekar(p,q):
    numbers = []
    for candidate in range(p,q):
        candidate_squared = candidate**2
        candidate_squared_string = '%d'%candidate_squared
        for split_point in range(1,len(candidate_squared_string)):
            part_1 = candidate_squared_string[:split_point]
            part_2 = candidate_squared_string[split_point:]
            if int(part_1)+int(part_2)==candidate:
                numbers.append(candidate)
                break
if __name__ == '__main__':
    p = int(input())
    q = int(input())
    find_kaprekar(p, q)
如果int(midone或0)+int(midtoo或0)=i**2:
可能(尽管它有点滥用布尔或
def find_kaprekar(p,q):
    numbers = []
    for candidate in range(p,q):
        candidate_squared = candidate**2
        candidate_squared_string = '%d'%candidate_squared
        for split_point in range(1,len(candidate_squared_string)):
            part_1 = candidate_squared_string[:split_point]
            part_2 = candidate_squared_string[split_point:]
            if int(part_1)+int(part_2)==candidate:
                numbers.append(candidate)
                break
if __name__ == '__main__':
    p = int(input())
    q = int(input())
    find_kaprekar(p, q)