Python Kaprekar Number-ValueError:以10为基数的int()的文本无效:'';。字符串到整数
根据,kaprekar数是一个数字,如果它在该基数中的平方表示可以分为两部分,其中第二部分有p个数字,这两个数字相加为原始数字。例如,9*9=81,可以写成8+1。因此,81是kaprekar数 以下函数必须打印p和q范围内给定范围内的kaprekar数。但是,我从第8行Python Kaprekar Number-ValueError:以10为基数的int()的文本无效:'';。字符串到整数,python,python-3.x,Python,Python 3.x,根据,kaprekar数是一个数字,如果它在该基数中的平方表示可以分为两部分,其中第二部分有p个数字,这两个数字相加为原始数字。例如,9*9=81,可以写成8+1。因此,81是kaprekar数 以下函数必须打印p和q范围内给定范围内的kaprekar数。但是,我从第8行r=int(sqr[d:])接收到ValueError 输入:1100 错误: Traceback (most recent call last): File "Solution.py", line 18
r=int(sqr[d:])
接收到ValueError
输入:1100
错误:
Traceback (most recent call last):
File "Solution.py", line 18, in <module>
result = kaprekarNumbers(p, q)
File "Solution.py", line 8, in kaprekarNumbers
r = int(sqr[d:])
ValueError: invalid literal for int() with base 10: ''
回溯(最近一次呼叫最后一次):
文件“Solution.py”,第18行,在
结果=卡普卡数(p,q)
文件“Solution.py”,第8行,以Kaprekar数字表示
r=int(sqr[d:]
ValueError:基数为10的int()的文本无效:“”
看下面几行:
d = len(str(i))
# -- snip --
r = int(sqr[d:])
这使得假设
str(i)
的长度小于sqr
的长度。对于输入值0、1、2和3,情况并非如此,因此sqr[d:][/code>最终将为空,因此会出现错误。对于输入p<4
,会发生这种情况。然后sqr
的值将只是一个单位数字符串,这意味着sqr[d:://code>的结果将是一个空字符串(并且您不能解析空字符串的整数值)
要解决函数的问题,如果提供的值低于该值,只需手动将p
的值设置为4即可
def-kaprekarNumbers(p,q):
如果p<4:p=4
...
您能否使用导致错误的示例输入更新您的问题?您的p
是否小于4?
d = len(str(i))
# -- snip --
r = int(sqr[d:])