【问题标题】:can not find the reason for 'name not defined' in python code在 python 代码中找不到“名称未定义”的原因
【发布时间】:2021-04-24 05:54:23
【问题描述】:

请原谅调试问题,一般来说是编码新手。无法理解为什么我的代码突然无法运行。 我检查了似乎不是我的问题的拼写错误。

filepath = '/proper_noun.txt'

def pluralize(word):
  proper_nouns = [line.strip() for line in open (filepath)]
  for item in proper_nouns:                                  ### print out the list once.
    if (item==[-1]):
      break;

目前在 google colab 工作。

此时,我只是试图将“proper_nouns”中的项目返回到列表中以使球滚动。有什么想法吗?

print (proper_nouns)


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-29-c6832e0493e8> in <module>()
----> 1 print (proper_nouns)

NameError: name 'proper_nouns' is not define

谢谢各位。我希望这个问题遵循 SOF 礼仪

【问题讨论】:

  • 如果您包含实际的整个堆栈跟踪会很好。您尚未指定 Python 认为未定义的名称,堆栈跟踪将包含该名称。
  • 另外,当我运行你的代码时,没有这样的错误,所以你看到的错误可能不是由你发布的代码引起的。这就是堆栈跟踪会有所帮助的原因,因为它可能指向不同的代码。另外,item==[-1] 这行没有意义,你能解释一下你认为这是做什么的吗?而且,break; 后面的分号不是标准的 Python 语法;你能解释一下为什么会有那个吗?
  • 抱歉,我刚刚将它包含在主要条款中。错误是指我的文件路径吗?
  • 该错误不是来自您发布的代码。请发布实际显示该错误的代码。它特别指出的行不会出现在您显示的代码中的任何地方。如果您尝试在 pluralize 函数之外打印 proper_nouns,由于范围的原因,这显然不起作用,但我们不知道这是否是您真正想要做的。
  • 对于循环,没有它,打印出'proper_nouns'对象会无休止地重复。我认为使用 ``` item == [-1] ``` 添加循环会在到达最后一个元素时停止循环。现在参考我自己的逻辑,不需要'bre​​ak;'

标签: python list directory


【解决方案1】:

由于您在 Google Colab 上工作,我的猜测是您不小心没有从头开始运行代码(例如,如果您选择从 for item in proper_nouns: 开始的代码并且只运行选定的部分,或者如果您拆分您的程序在不同的单元格中),因此尚未定义proper_nouns。 请确保您运行所有内容并告诉我们是否是这样。

编辑:我刚刚想到了另一种选择:print(proper_nouns)pluralize 函数中的行吗?如果不是,proper_nouns 的作用域是函数,没有在函数之外定义是正常的。要从外部访问它,您必须在函数外部声明它,或者返回它。

【讨论】:

  • 肯定检查过多次。我认为 Random Davis 根据范围在某个地方领先。 " 如果您尝试在复数函数之外打印proper_nouns,由于范围的原因,这显然是行不通的,但我们不知道这是否是您真正想要做的事情"
  • 好的,你在我编辑同样的想法时发表了评论 ^^ 很高兴你修复了它,继续编码,这样的主题应该在你的脑海中变得一清二楚!
  • 谢谢你,祝你一切顺利
猜你喜欢
  • 2012-05-24
  • 1970-01-01
  • 2020-05-18
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 2019-07-07
  • 1970-01-01
  • 2011-05-14
相关资源
最近更新 更多