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)
如果非要我猜的话,那是因为在减法过程中得到的一些数字少于4个字符。例如,1001-1001=0。
0
的字符串表示形式就是"0"
,因此调用a[1]
、a[2]
或a[3]
将超出界限。你知道吗编辑:具体来说,2111-1112=999。作为一个字符串,它是“999”,只有三个字符。因此,调用
a[3]
会导致越界错误。如果您想解决这个问题,可以执行以下操作。你知道吗检查你自己,这是工作。如果
a = "999"
,n
将是[0,9,9,9]
,正如它应该的那样。当前编写的代码将设置n = [9,9,9]
,这将导致调用n[3]
时出现索引错误。你知道吗在相应地更改代码之后,程序将产生正确的输出(我猜)。对于
a = "1112"
,迭代中a
值的顺序是999
8991
8082
8532
,打印的最终值是5
。你知道吗希望有帮助!你知道吗
相关问题 更多 >
编程相关推荐