我正在试着做一个摩尔斯加密器,我不明白为什么我的代码不能工作。我有一个我使用教程制作的工作程序,但这一个和那个主要有相同的内部。
我的代码:
cheat_sheet = { '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':'--..',
'1':'.----', '2':'..---', '3':'...--',
'4':'....-', '5':'.....', '6':'-....',
'7':'--...', '8':'---..', '9':'----.',
'0':'-----', ', ':'--..--', '.':'.-.-.-',
'?':'..--..', '/':'-..-.', '-':'-....-',
'(':'-.--.', ')':'-.--.-'}
cache = 'beans'
def morse_encrypter (placeholder):
for letter in placeholder:
cache += cheat_sheet [letter]
return cache
b = input ('bruh')
def DO_THE_THING():
placeholder = b
the_answer = morse_encrypter(placeholder.upper())
print (the_answer)
DO_THE_THING ()发布于 2020-10-23 02:06:19
问题是您的代码通过+=操作引用了cache的当前值,但是没有定义它。默认情况下,函数中使用的变量是它们的局部变量,因此您可以通过在morse_encrypter()的开头添加一个cache = ''来解决这个问题。
然而。事实是,如果您使用的是如下所示的generator expression,那么您实际上根本不需要该变量:
def morse_encrypter(placeholder):
return ''.join(cheat_sheet[letter] for letter in placeholder)如果您感兴趣,文档中还提供了有关生成器表达式和相关列表理解here的其他信息。
发布于 2020-10-23 02:14:32
使用
morse_encrypter()中的
“全局缓存”
这应该行得通-
cheat_sheet = { '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':'--..',
'1':'.----', '2':'..---', '3':'...--',
'4':'....-', '5':'.....', '6':'-....',
'7':'--...', '8':'---..', '9':'----.',
'0':'-----', ', ':'--..--', '.':'.-.-.-',
'?':'..--..', '/':'-..-.', '-':'-....-',
'(':'-.--.', ')':'-.--.-'}
cache = 'beans'
def morse_encrypter (placeholder):
global cache
for letter in placeholder:
cache += cheat_sheet [letter]
return cache
b = input ('bruh')
def DO_THE_THING():
placeholder = b
the_answer = morse_encrypter(placeholder.upper())
print (the_answer)
DO_THE_THING ()或者,您可以根据您的程序要求启动“cache”的本地实例。
发布于 2020-10-23 02:25:41
将cache = '‘放入morse_encrypted方法中
https://stackoverflow.com/questions/64487946
复制相似问题