我的Python 3导致编译错误,但没有';我想没有错
我想解决6174问题 所以我编写了如下代码 但当我输入1112时,它会导致错误 我不明白为什么会出错。我认为这是正确的代码 这仅仅是Python3的bug吗我的Python 3导致编译错误,但没有';我想没有错,python,python-3.x,Python,Python 3.x,我想解决6174问题 所以我编写了如下代码 但当我输入1112时,它会导致错误 我不明白为什么会出错。我认为这是正确的代码 这仅仅是Python3的bug吗 p、 因为我不能发布图片,所以我留下了图片的链接。如果我不得不猜测,那是因为在减法过程中获得的一些数字少于4个字符。例如,1001-1001=0。0的字符串表示形式就是“0”,因此调用a[1]、a[2]、或a[3]都是越界的 编辑:具体来说,2111-1112=999。作为一个字符串,这是“999”,它只有三个字符。因此,调用[3]会导
p、 因为我不能发布图片,所以我留下了图片的链接。如果我不得不猜测,那是因为在减法过程中获得的一些数字少于4个字符。例如,1001-1001=0。
0
的字符串表示形式就是“0”
,因此调用a[1]
、a[2]
、或a[3]
都是越界的
编辑:具体来说,2111-1112=999。作为一个字符串,这是“999”,它只有三个字符。因此,调用[3]会导致越界错误。如果要修复此问题,可以执行以下操作
a = input()
for i in range(0,1000):
digits = len(a) ##You need to mind how many digits a has
n = [0, 0, 0, 0] ##Initialize all the digits of n to 0
for j in range(0, digits):
n[j+4-digits] = a[j] ##Fill up n with an offset if a has fewer than 4 digit
a = n[0]*1000 + n[1]*100 +n[2]*10 + n[3]
b = n[3]*1000 + n[2]*100 +n[1]*10 + n[0]
if b - a == 6174:
break
a = str(b-a)
print (i+1)
检查你自己,这是有效的。如果a=“999”
,n
将是[0,9,9,9]
,这是应该的。当前编写的代码将设置n=[9,9,9]
,这将导致调用n[3]
时出现索引错误
在相应地更改代码后,程序将生成正确的输出(我猜)。对于a=“1112”
,迭代过程中a
值的顺序是999
8991
8082
8532
,打印的最终值是5
希望有帮助 你不应该粘贴代码的图像;将代码作为文本发布。不,这不是Python中的错误。:)它成为Python bug的可能性很低,不值得担心。一旦你将代码和回溯直接放在问题中,我很乐意提供帮助:P。请还包括你试图完成的任务的描述。很抱歉,我不知道如何将代码作为文本发布。我链接图像的原因是当我键入代码时,它被破坏了。所以它很难阅读。