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'时,代码将无法工作-它会产生索引超出范围的错误。