我尝试了自己的小凯撒密码,直到现在它的工作非常好......我想补充一点,在程序结束后,界面会询问用户是否要再次执行该程序,但我是失败......
到目前为止,这是我的代码:
print("Willkommen zur Caesarchiffre!")
def my_func() :
MAX_KEY_SIZE = 26
def getMode():
while True:
print('Wollen sie verschlüsseln(v) oder entschlüsseln(e) ?')
mode = input().lower()
if mode in 'verschlüsseln v entschlüsseln e'.split():
return mode
else:
print('Bitte geben sie entweder "v" zum verschlüsseln oder "e" zum entschlüsseln ein .')
def getMessage():
print('Geben sie ihre Nachricht ein:')
return input()
def getKey():
key = 0
while True:
print('Geben sie die Zahl der Verschiebung(en) an. (1-%s)' % (MAX_KEY_SIZE))
key = int(input())
if (key >= 1 and key <= MAX_KEY_SIZE):
return key
def getTranslatedMessage(mode, message, key):
if mode[0] == 'e':
key = -key
translated = ''
for symbol in message:
if symbol.isalpha():
num = ord(symbol)
num += key
if symbol.isupper():
if num > ord('Z'):
num -= 26
elif num < ord('A'):
num += 26
elif symbol.islower():
if num > ord('z'):
num -= 26
elif num < ord('a'):
num += 26
translated += chr(num)
else:
translated += symbol
return translated
mode = getMode()
message = getMessage()
key = getKey()
print('Ihr Text lautet:')
print(getTranslatedMessage(mode, message, key))
我不知道如何循环整个程序...
我不是英文原文,所以print(“”)的显示文字不是英文
修改
以下是我在评论中提到的摘录:
return translated
while True :
mode = getMode()
if mode = 'b'
break
message = getMessage()
key = getKey()
答案 0 :(得分:0)
你需要永远重复,直到用户决定退出,例如:
while True:
mode = getMode()
if mode == 'q':
break
message = getMessage()
key = getKey()
所以他会在v
,e
和q
之间选择退出