我的python3会导致编译错误,但我没有发现任何错误

2024-09-30 06:22:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想解决6174问题。你知道吗

所以我做了如下代码。你知道吗

http://cfile9.uf.tistory.com/image/254FDD4955CA9C85082FE2

但输入1112时会出错。你知道吗

http://cfile8.uf.tistory.com/image/2448F44955CA9C860DD8A1

我不明白为什么会出错。我认为这是正确的密码。你知道吗

是否只是python3bug?你知道吗

因为我不能发布图片,所以我会留下图片的链接。你知道吗


Tags: 代码imagecomhttp密码链接图片时会
1条回答
网友
1楼 · 发布于 2024-09-30 06:22:02

如果非要我猜的话,那是因为在减法过程中得到的一些数字少于4个字符。例如,1001-1001=0。0的字符串表示形式就是"0",因此调用a[1]a[2]a[3]将超出界限。你知道吗

编辑:具体来说,2111-1112=999。作为一个字符串,它是“999”,只有三个字符。因此,调用a[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值的顺序是999899180828532,打印的最终值是5。你知道吗

希望有帮助!你知道吗

相关问题 更多 >

    热门问题