首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在赋值之前,我收到一条消息"local variable 'cache‘referenced

在赋值之前,我收到一条消息"local variable 'cache‘referenced
EN

Stack Overflow用户
提问于 2020-10-23 01:56:16
回答 3查看 37关注 0票数 0

我正在试着做一个摩尔斯加密器,我不明白为什么我的代码不能工作。我有一个我使用教程制作的工作程序,但这一个和那个主要有相同的内部。

我的代码:

代码语言:javascript
复制
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 ()
EN

回答 3

Stack Overflow用户

发布于 2020-10-23 02:06:19

问题是您的代码通过+=操作引用了cache的当前值,但是没有定义它。默认情况下,函数中使用的变量是它们的局部变量,因此您可以通过在morse_encrypter()的开头添加一个cache = ''来解决这个问题。

然而。事实是,如果您使用的是如下所示的generator expression,那么您实际上根本不需要该变量:

代码语言:javascript
复制
def morse_encrypter(placeholder):
    return ''.join(cheat_sheet[letter] for letter in placeholder)

如果您感兴趣,文档中还提供了有关生成器表达式和相关列表理解here的其他信息。

票数 1
EN

Stack Overflow用户

发布于 2020-10-23 02:14:32

使用

morse_encrypter()中的

“全局缓存”

这应该行得通-

代码语言:javascript
复制
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”的本地实例。

票数 0
EN

Stack Overflow用户

发布于 2020-10-23 02:25:41

将cache = '‘放入morse_encrypted方法中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64487946

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档