【问题标题】:Why I am getting this "NameError: name 'trainingData' is not defined"为什么我收到此“NameError:未定义名称'trainingData'”
【发布时间】:2021-05-17 17:26:54
【问题描述】:

我尝试如下导入 training.txt 数据。

def readTrainingData(training):
    
    trainingData=[]
    
    with open(training.txt) as f:
        
        for line in f:
            a1, a2 = line.strip().split()
            trainingData.append((a1, a2))
    return trainingData 

之后,我尝试使用 traingdata 来测量一些分数,如下所示:

for pair in trainingData:
  linkScores[pair[0]+''+pair[1]]= computeProximityScore(pair[0],pair[1],'Jaccard',neighbors)

但它给出了一个错误


---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-17-2532640f4771> in <module>
----> 1 trainingData

NameError: name 'trainingData' is not defined

有人可以帮帮我吗?

谢谢

【问题讨论】:

  • 你测试的时候是怎么调用函数的?
  • 我正在使用以下命令作为下一步:对于 trainingData 中的配对:linkScores[pair[0]+''+pair[1]]= computeProximityScore(pair[0],pair[1 ],'Jaccard',邻居)。
  • 您需要先调用该函数或更新您的代码。变量trainingData 是在函数内部定义的,因此在其他地方Python 不会在函数外部识别该变量。

标签: python-3.x nameerror


【解决方案1】:

当您将变量 training 传递给函数时,我不明白您的尝试。 但是当你打开一个文件时,你需要这样做:

```with open("file_name.txt") as f:```

另外,你不能在函数之外访问变量trainingData

我更新了你的代码(我希望它是你想要的):

Main(或您运行该功能的任何其他地方):

trainingData = readTrainingData("training.txt")
# The rest of your code.

你的职能:

def readTrainingData(training):
    trainingData = []

    with open(training) as f:
        for line in f:
            a1, a2 = line.strip().split()
            trainingData.append((a1, a2))
    return trainingData

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    相关资源
    最近更新 更多