我的老师给了我这个关于密码的问题。此代码中的一行损坏了,我不确定是什么。
我拥有的变量输入是:
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,并且应该将输入的余数追加到数组的同一位置。但是我不知道为什么它不能那样工作。
我看到的是它试图防止磁盘插槽阵列中的数据超过26
您的老师是否明确地说此代码只有一行错误?因为除非我缺少任何东西,否则我认为您想要if diskSlot1[1] >= 26:
,而不是if diskSlot1[1] <= 26:
。其他if语句也是如此。
如果您能给我更多的信息,我很乐意提供帮助。例如,diskSlot1、2和3是什么?我可以看到它们是列表,但是其中包含什么以及如何创建?什么是diskPI,diskPII和diskPIII?也请填写所需的算法。