我正在创建一个加密程序。该方案通过如下旋转消息中的元音来工作:
“ a”变成“ e”,“ e”变成“ i”,“ i”变成“ o”,“ o”变成“ u”,“ u”变成“ a”。
如果一个字母不是元音,它将被移动n次。如果n为5,则 “ b”变成“ g”,“ c”变成“ h”,“ d”变成“ i”,…,“ x”变成“ d”,“ z”变成“ e” 例如字母“ break”变成“ gwiep”。要对其解密,请执行相反的操作。 这是我的代码,但仅用于元音,无法提供所需的输出。
print('Welcome to the data encryption program.')
words = input('Enter your messsage:r ')
for char in words:
if char == 'a':
words = words.replace('a','e')
elif char == 'e':
words = words.replace('e','i')
elif char == 'i':
words = words.replace('i','o')
elif char == 'o':
words = words.replace('o','u')
elif char == 'o':
words = words.replace('o','u')
print(words)
这是我得到的结果。
Enter your messsage: aeiou
uuuuu
答案 0 :(得分:1)
words.replace
将替换字符串中的所有字母,因此在第一次遇到a
之后,它们将被替换为e
。然后,只要遇到e
,您先前替换的a
(现在为e
)将也翻译为i
等等。
最好不要使用replace()
,而是将每个翻译附加到翻译后的字符串上:
print('Welcome to the data encryption program.')
words = input('Enter your messsage: ')
translated = '';
for char in words:
if char == 'a':
translated += 'e'
elif char == 'e':
translated += 'i'
elif char == 'i':
translated += 'o'
elif char == 'o':
translated += 'u'
else:
translated += char
print(translated)
结果:
[bart@localhost playground]$ python3 foo.py
Welcome to the data encryption program.
Enter your messsage: aeiou
eiouu
我还必须补充一点,这种“加密”绝对不能在真实的应用程序中使用。
答案 1 :(得分:1)
我认为最简单的方法是使用字典:
code = {"a":"e", "e":"i", "i":"o", "o":"u", "u":"a"}
word = input("Your word: ")
encoded = [code[w] if w in code else w for w in word]
encoded = ''.join(encoded)
首先,我用您的代码定义一个字典,我要求一个单词并将其转换为列表。我替换了应替换的元素,否则将旧元素保留在列表理解中。最后,我将列表添加到字符串中。
答案 2 :(得分:0)
这可能有效:
new_word = []
for char in words:
if char == 'a':
new_word.append('e')
elif char == 'e':
new_word.append('i')
elif char == 'i':
new_word.append('o')
elif char == 'o':
new_word.append('u')
elif char == 'u':
new_word.append('a')
print(''.join(new_word))
答案 3 :(得分:0)
实现的问题是,您要将所有字符变形为彼此,直到它们全部变成u。您的a变成e,然后您的a和e变成我,...,直到所有字符都变成u。
保留字符并交换到位的一种方法是先将它们替换为不同的值,然后将新字符串转换为所需的字符。一个示例是将它们与大写值交换,然后只需将字符串小写即可得到答案。
这也不必循环执行,可以在字符串上完成。
print('Welcome to the data encryption program.')
words = input('Enter your message: ')
words = words.replace('a','E')
words = words.replace('e','I')
words = words.replace('i','O')
words = words.replace('o','U')
words = words.replace('u','A')
words = words.lower()
print(words)