两个代码都可以工作(凯撒密码):但是一个代码重新排列输出



python初学者。在我知道如何使用.index()之前,我使用了一种变通方法。当它确实起作用时,奇怪的事情发生了。输出字符串被重新排列,我不知道为什么。

下面是我的代码:
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
text = input("Type your message:n").lower()
shift = int(input("Type the shift number:n"))

#input for text = "code" integer for shift = 5
#First attempt

for index, price in enumerate(alphabet):
new_index = shift + index
for loop in text:
if loop == price:
print(alphabet[new_index])
#Second attempt using .index 
for letter in text:
position = alphabet.index(letter)
new_index = position + shift
print(alphabet[new_index])

以下是输出

第一个代码的输出= hijt

第二个代码的输出= htij

您的第一个代码将按字母顺序重新排列的字母打印出来(在使用密码之前)。你遍历你的enumerate, a-z的字母表,然后寻找你的单词中的每个字母。例如,如果你的单词是'ba',移动1,它应该输出'cb' -但它输出'bc'。这是因为循环查找'a',并在查找'b'之前打印转换后的值。

你的第二个是正确的。

注意:我不知道为什么您的示例输出在单行上-print通常添加一个换行符,因此每个字母将在单独的行上。此外,您应该意识到,当新字母超过'z'时,代码将无法工作-它会产生索引超出范围的错误。

相关内容

  • 没有找到相关文章

最新更新