![](/img/trans.png)
[英]Kaprekar Number- ValueError: invalid literal for int() with base 10: ' '. String to 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 == 1
, midone = '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.