坚持尝试调试此作业

问题描述 投票:-2回答:1

我的老师给了我这个关于密码的问题。此代码中的一行损坏了,我不确定是什么。

我拥有的变量输入是:

  • diskslot1{II, 25}
  • diskslot2{III, 18}
  • diskslot3{I,5}

并且如果在谜题中输入5个字母,则此部分应输出:

  • diskslot1{II, 4}
  • diskslot2{III, 19}
  • diskslot3{I,5}

我当前的输出是:

  • diskslot1{II, 0}
  • diskslot2{III, 0}
  • diskslot3{I,0}

我很确定第二种方法(leftRotatebyOne())是正确的。

def diskRotate():
    diskSlot1[1] = diskSlot1[1] + 1
    if diskSlot1[1] <= 26:
        leftRotatebyOne(diskSlot1[0],26)
        diskSlot1[1] = 0
        diskPI.set(diskSlot1[1]+1)
        diskSlot2[1] = diskSlot2[1] + 1
        if diskSlot2[1] <= 26:
            leftRotatebyOne(diskSlot2[0],26)
            diskSlot2[1] = 0
            diskPII.set(diskSlot2[1]+1)
            diskSlot3[1] = diskSlot3[1] + 1
            if diskSlot3[1] <= 26:
                leftRotatebyOne(diskSlot3[0],26)
                diskSlot3[1] = 0
                diskPIII.set(diskSlot3[1]+1)
            else:
                leftRotatebyOne(diskSlot3[0],26)
                diskPIII.set(diskSlot3[1]+1)
        else:
            leftRotatebyOne(diskSlot2[0],26)
            diskPII.set(diskSlot2[1]+1)
    else:
        leftRotatebyOne(diskSlot1[0],26)
        diskPI.set(diskSlot1[1]+1)


#Function to left Rotate arr[] of size n by 1*/
def leftRotatebyOne(arr, n):
    temp = arr[0]
    for i in range(n-1):
        arr[i] = arr[i+1]
    arr[n-1] = temp

因此,我的老师根据谜题机给了我这段代码。我知道一条线坏了。我正在寻找它,这很有意义,但是我不确定为什么它起作用。我看到的是,它试图防止diskslot数组中的数据超过26,并且应该将输入的余数追加到数组的同一位置。但是我不知道为什么它不能那样工作。

python
1个回答
0
投票

我看到的是它试图防止磁盘插槽阵列中的数据超过26

您的老师是否明确地说此代码只有一行错误?因为除非我缺少任何东西,否则我认为您想要if diskSlot1[1] >= 26:,而不是if diskSlot1[1] <= 26:。其他if语句也是如此。

如果您能给我更多的信息,我很乐意提供帮助。例如,diskSlot1、2和3是什么?我可以看到它们是列表,但是其中包含什么以及如何创建?什么是diskPI,diskPII和diskPIII?也请填写所需的算法。

© www.soinside.com 2019 - 2024. All rights reserved.