簡體   English   中英

Kaprekar數字:我得到ValueError:以10為底的int()的無效文字''

[英]Kaprekar numbers: I Get ValueError: invalid literal for int() with base 10 ''

我不知道為什么會收到這種錯誤。.此代碼是關於在特定間隔中找到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('')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: ''

您正在抓取數字的子字符串,這些子字符串之一為空。

例如,如果p == 1midone = '1'midtwo ='' 我不知道算法,但也許您想將空字符串視為0

這個程序有幾個問題。 正如其他人指出的那樣,按照書面形式,它試圖將空字符串轉換為整數,這會導致OP的ValueError

更重要的是,它不會輸出Kaprekar數Kaprekar數是平方K可以分為兩部分的數字K'K'' ,從而K' + K'' = sqrt( K )。 該OP的節目似乎打算生產號碼Ĵ可分成兩個部分J“J‘’,使得J” + J'= J(1)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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM