为什么我的 Python 代码会出现“未定义”错误?

2023-11-29

如果变量“key”返回到解密函数中,为什么它无法被识别?错误显示“NameError:全局名称'key'未定义”以下是代码:

alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphaList = list(alphabet)
text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj"

def createKey(aList):
    key = []
    count = 0
    for letter in aList:
        if count < 24:
            key.append(aList[count + 2])
        else:
            key.append(aList[count - 24])
        count += 1
    return key

def decrypt(text):
    createKey(alphaList)
    decryptedList = []
    textList = list(text)
    for c in textList:
        if c in alphaList:
            index = alphaList.index(c)       
            decryptedList.append(key[index])    
        else:
            decryptedList.append(c)
    decryptedText = "".join(decryptedList)
    return decryptedText

print decrypt(text)

你从不分配key:

createKey(alphaList)

将其更改为:

key = createKey(alphaList)

发生这种情况是因为key in createKey(alphaList)是的一部分createKey名称范围。尽管您返回了它,但您并没有将其创建为decrypt名称范围。

或者,您可以使用全局变量,但我不建议这样做,特别是因为通过分配可以轻松解决key in decrypt():

alphabet = 'abcdefghijklmnopqrstuvwxyz'
alphaList = list(alphabet)
text = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj"
key = []

def createKey(aList):
    global key
    # everything else
    # no need to return, the `global key` has been changed

def decrypt(text):
    global key
    createKey(alphaList)
    # everything else

参考:

  • Python 名称范围
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 Python 代码会出现“未定义”错误? 的相关文章

  • Pandas 将行中的非空值获取到一个单元格中[重复]

    这个问题在这里已经有答案了 给定以下数据框 a pd DataFrame A 1 2 B 4 0 C 1 2 a A B C 0 1 4 1 1 2 0 2 我想创建一个新专栏D包含由列分隔的非空值 每行 像这样 A B C D 0 1 4
  • ipdb 和 pdb++ 之间的区别?

    Python 有一个名为 pdb 的默认调试器 但社区创建了一些替代品 其中两个是ipdb https github com gotcha ipdb and pdb https github com pdbpp pdbpp 它们似乎迎合了相
  • 将打开关闭的 Google Chrome 浏览器添加到 Selenium linkedin_scraper 代码中

    我正在尝试抓取一些知名人士的 LinkedIn 个人资料 该代码获取一堆 LinkedIn 个人资料 URL 然后使用Selenium and scrape linkedin收集信息并将其作为 json 文件保存到文件夹中 我遇到的问题是
  • 在 Python 3 中动态导入模块的问题

    我遇到的情况是 在我的 Python 3 项目中 在运行时必须包含某些模块 我在用着importlib import module为了这 第二次更新 我确实找到了一种方法来做一些接近我想要的事情 一些额外的代码可能会使我的一些链接稍微偏离一
  • 将 matplotlib png 转换为 base64 以在 html 模板中查看

    背景 你好 我正在尝试制作一个简单的网络应用程序 按照教程计算阻尼振动方程 并将结果的 png 返回到 html 页面 然后将其转换为 Base64 字符串 Problem 该应用程序运行正常 只是在计算结果时返回损坏的图像图标 可能是因为
  • 使用opencv计算深度视差图

    我无法使用 opencv 从视差图计算深度 我知道两个立体图像中的距离是用以下公式计算的z baseline focal disparity p 但我不知道如何使用地图计算视差 我使用的代码如下 为我提供了两个图像的视差图 import n
  • 对图像使用 Pixellib 自定义训练时出现 input_image 元形状错误

    我正在使用 Pixellib 来训练自定义图像实例分割 我创建了一个数据集 可以在下面的链接中看到 数据集 https drive google com drive folders 1MjpDNZtzGRNxEtCDcTmrjUuB1ics
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • Selenium:等到 WebElement 中的文本发生变化

    我在用着selenium使用Python 2 7 从网页上的搜索框检索内容 搜索框动态检索结果并在框本身中显示结果 from selenium import webdriver from selenium webdriver common
  • 在ansible中合并字典

    我目前正在构建一个使用 ansible 安装 PHP 的角色 并且在合并字典时遇到一些困难 我尝试了多种方法来做到这一点 但我无法让它像我想要的那样工作 A vars file my default values key value my
  • 如何使用python读取最后一行的特定位置

    我有一个太大的 txt 文件 并且有几行类似的行 如下所示 字1 字2 字3 字4 553 75 我对位置 4 值 感兴趣 即最后一行 553 75 我的文件文本 word1 word2 word3 word4 553 20 word1 w
  • 如何使用 msgpack 进行读写?

    如何序列化 反序列化字典data with msgpack http msgpack org The Python 文档 http msgpack python readthedocs io en latest badge latest似乎
  • 有没有任何方法可以使用 openpyxl 获取 .xlsx 工作表中存在的行数和列数?

    有没有任何方法可以使用 openpyxl 获取 xlsx 工作表中存在的行数和列数 在xlrd中 sheet ncols sheet nrows 将给出列数和行数 openpyxl中有这样的方法吗 给定一个变量sheet 可以通过以下方式之
  • 为 Python 2.4 改进“with”语句的直接替换

    您能否建议一种方法来编写可在 Python 2 4 中使用的 with 语句的直接替换代码 这将是一个 hack 但它可以让我更好地将我的项目移植到 Python 2 4 EDIT 删除了不相关的元类草图 只需使用 try finally
  • x11 - 导入错误:没有名为“kivy.core.window.window_x11”的模块

    目前我正在尝试构建一个我通过 buildozer 用 Python 和 Kivy 编写的应用程序 无论我在做什么 我都会遇到 window x11 的问题 即使我在代码中注释掉所有与 Windows 相关的内容或执行本文中描述的所有操作 这
  • Flask SQLAlchemy 与 MyPy - 模型类型错误

    我遇到了以下组合问题flask sqlalchemy and mypy 当我定义一个新的 ORM 对象时 例如 class Foo db Model pass where db是使用创建的数据库SQL炼金术应用于flask app mypy
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • 使 matplotlib 图形默认看起来像 R?

    Is there a way to make matplotlib behave identically to R or almost like R in terms of plotting defaults For example R t
  • Selenium Python 使用代理运行浏览器[重复]

    这个问题在这里已经有答案了 我正在尝试编写一个非常简单的脚本 该脚本从 txt 文件获取代理 不需要身份验证 并用它打开浏览器 然后沿着代理列表循环此操作一定次数 我确实知道如何打开 txt 文件并使用它 我的主要问题是让代理正常工作 我见
  • Shap - 颜色条不显示在摘要图中

    显示summary plot时 不显示颜色条 shap summary plot shap values X train 我尝试过改变plot size 当绘图较高时 会出现颜色条 但它非常小 看起来不应该 shap summary plo

随机推荐

  • Prolog 编程 - 解决方案的途径

    我在大学学习序言并面临一些问题 我已经发现的只是解决问题的方法 然而 我更感兴趣的是思考的方式 即如何得到这样的解决方案 有人可以给我关于这个领域的建议吗 我将衷心感谢您的帮助 我举了一个我正在处理的例子 并且在 stackoverflow
  • 如何拒绝 Linq to SQL DataContext 中的所有更改?

    在 Linq to SQL 的 DataContext 上 我可以调用 SubmitChanges 来提交所有更改 我想要的是以某种方式拒绝数据上下文中的所有更改并回滚所有更改 最好不访问数据库 这可能吗 为什么不丢弃数据上下文并简单地用新
  • 在 Fabric js 中缩放时保持对象大小

    即使用户放大或缩小 是否有任何解决方案可以保持对象大小 我想实现像谷歌地图上的行为 因此 如果我有一个高度和宽度为 20 的对象 对象组 即使我放大它 默认情况下它仍然应该是 20 像素 现在我的行 为是 当用户放大或缩小图像时 图像会变大
  • 如何生成组合矩阵

    我有 5 个项目 每个项目的值为 1 或 1 我想生成一个由可能组合的行组成的矩阵 项目的顺序并不重要 组合的顺序也不重要 我知道我可以机械地完成此操作 但我认为必须有人知道生成此矩阵的快捷方式 如果这与其他问题类似 我深表歉意 但我找到的
  • 重现捕获迭代变量问题

    我正在重读 Nutshell 中的 c 5 0 中有关捕获迭代变量的部分 第 138 页 并且我尝试在 c 4 0 和 c 5 0 上重现以下代码 但直到现在才希望发现差异 using System class Test static vo
  • 通过 Dropbox Api V2 上传文件

    以前我使用的是Dropbox API V1在我的网络应用程序中上传文件到我的 Dropbox 帐户 请注意 该应用程序仅使用一个 Dropbox 帐户 我的 来上传文件 所以以前 我在 Dropbox 开发者控制台上创建了一个应用程序 从开
  • Eclipse 强制处理程序使用 activeWhen 重新评估

    我看过这个问题Eclipse 强制处理程序重新评估以及保罗 韦伯斯特提供的答案 为什么这不能使用活动时间处理程序中的元素 仅当我更改以下plug in xml以使用启用时间元素 一旦运行命令 我的特定命令就不应再启用
  • Laravel 按 hasmany 关系排序

    我有两个雄辩的模特Threads and Comments 每个帖子都有很多评论 在列出线程时 我需要按created at降序对线程进行排序 所以 我需要使用对线程进行排序created at in Comments 显然点符号对于以这种
  • 如何将项目放入按特定键分组的分组数组中

    我对 JS 中的对象还很陌生 所以我需要一些帮助 我有以下数组 var persons fname Steven lname Jameson age 20 fname George lname Thrump age 40 fname Pet
  • 在 R 中,如何将具有单个逗号分隔字段的一条记录转换为多条记录?

    我在R工作 我有一个数据集 其中一些记录包含城市和县的列表 而不仅仅是一个城市或县 我正在寻找一种方法将该数据转换为 长 格式 其中会有多个记录 每个记录都有一个城市 县 reshape 假定多列 而不是一列中的逗号分隔列表 strspli
  • Winforms:平滑面板的圆角边缘

    我已关注本教程以创建圆形面板 本教程中的代码是用 vb 编写的 但我能够将其转换为 C 所以这是我的代码 public class SPanel Panel Pen pen float penWidth 2 0f int edge 20 C
  • Cordova / Phonegap 获取设备的电话号码(Android 和 iOS)

    是否可以使用 Phonegap Cordova 开发混合移动应用程序并访问 Android 和 iOS 设备的电话号码 iOS 您可以使用 CoreTelephony 框架检索电话号码 您需要添加以下权利 com apple coretel
  • 转置查询输出

    我有一个正常的选择查询 其结果如下输出 select cid x1 x2 x3 x4 fy from temp table cid x1 x2 x3 x4 fy 6657 100 0 0 200 2014 6658 300 0 0 400
  • 如何将十六进制字符串转换为十进制

    当我尝试这个时 Decimal m Decimal Parse columns 1 System Globalization NumberStyles AllowHexSpecifier 我收到一个 ArgumentException 这么
  • 无法通过terraform中的ARM模板将API连接到逻辑应用程序

    在我的 terraform 中 我在 ARM 模板的帮助下创建了一个逻辑应用程序及其工作流程 逻辑应用中使用的 2 个连接也是通过 ARM 模板创建的 但不知何故 即使资源是在 Azure 中创建的 但是当我到达逻辑应用程序时 我总是必须手
  • 是否可以使用 FileSystemWatcher 识别哪个进程正在更改文件?

    是否可以使用 FileSystemWatcher 查找正在更改文件的 PID 或进程名称 不 您需要一个文件系统过滤器驱动程序来跟踪此类详细信息的更改
  • Winforms:有没有办法在我的应用程序中打开表单时收到通知?

    我的主窗体上有一个 切换到窗口 按钮 我希望仅当其他窗口 在我的应用程序中 打开时才启用该按钮 每当打开或关闭表单时 是否会引发某种我的主表单可以挂钩的事件 例如 也许某种方式可以跟踪 Application OpenForms 何时发生更
  • Linux - 将命令的 STDOUT 发送到 RSS Feed

    我希望使用个人 RSS 源进行系统报告 所以我想知道是否可以创建一个脚本将其 1 发送到 RSS 源 alaself test command gt rss report sh 我目前也没有设置 RSS 提要 那么设置从 Linux 机器运
  • PermGen 实际上代表什么?

    我知道 PermGen 是什么 它的用途是什么 为什么会失败 如何增加它等等 我不知道 PermGen 到底代表什么 永久 Gen 什么东西 有谁知道 PermGen 到底代表什么 永久一代 细节当然是特定于实现的 简而言之 它包含与类和内
  • 为什么我的 Python 代码会出现“未定义”错误?

    如果变量 key 返回到解密函数中 为什么它无法被识别 错误显示 NameError 全局名称 key 未定义 以下是代码 alphabet abcdefghijklmnopqrstuvwxyz alphaList list alphabe