local variable ‘classLabel‘ referenced before assignment Python机器学习_决策树DecisionTree中一个报错解决方法

机器学习实战中的遇到的问题及解决 1、如何从一个文本文件中读取数据,并转换成列表的形式 文本文件内容截图: 想要得到这样的形式:['young', 'myope', 'no', 'reduced', 'no lenses'], ['young', 'myope', 'no', 'normal', 'soft'],…… 代码:fr = open('C:\\Users\\aiMayday\\Desktop\\machin 阅读详情

def readDataSet(filePath):
    """
    函数说明:读取数据集
    parameters:
        filePath - 数据集文件路径
    returns:
        dataSet - 数据集
        labels - 分类属性
    """
    # 初始化数据集
    dataSet = []
    # 读取数据
    with open(filePath, 'r') as f:
        # 遍历每一行数据
        for line in f.readlines():
            # 去掉每行的空格并将数据分割成列表
            line = line.strip().split()
            # 将每一行的数据添加到数据集
            dataSet.append(line)

    # 数据集中实现了在no和lenses之间加入一个下划线,并将最后的标签整合为一个字符串。
    for i in range(len(dataSet)):
        #dataSet[i] = dataSet[i].replace("no lenses", "no_lenses")
        if(dataSet[i][-2] == 'no'):
            dataSet[i][-1] = dataSet[i][-2] + '_' + dataSet[i][-1]
            dataSet[i] = dataSet[i][:-2] + [dataSet[i][-1]]

    # 获取数据的分类属性
    labels = ['age', 'prescript', 'astigmatic', 'tearRate']
    return dataSet, labels

def majorityCnt(classList):
    """
    函数说明: 统计classList中出现次数最多的元素(类标签)
    Parameters:
        classList - 类标签列表
    Returns:
        sortedClassCount[0][0] - 出现次数最多的类标签
    """
    classCount = {}
    # 统计classList中每个元素出现的次数
    for vote in classList:
        if vote not in classCount.keys():
            classCount[vote] = 0
        classCount[vote] += 1
    # 根据字典的值降序排序
    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
    return sortedClassCount[0][0]

def createTree(dataSet, labels, featLabels):
    """
    函数说明:创建决策树
    Parameters:
        dataSet - 训练数据集
        labels - 分类属性标签
    Returns:
        myTree - 决策树
    """
    classList = [example[-1] for example in dataSet]
    if classList.count(classList[0]) == len(classList):
        return classList[0]
    if len(dataSet[0]) == 1:
        return majorityCnt(classList)
    bestFeat = chooseBestFeatureToSplit(dataSet)
    bestFeatLabel = labels[bestFeat] 
    featLabels.append(bestFeatLabel) #存储选择的最优特征标签
    myTree = {bestFeatLabel:{}}
    del(labels[bestFeat])
    featValues = [example[bestFeat] for example in dataSet]
    uniqueVals = set(featValues)
    for value in uniqueVals:
        subLabels = labels[:]
        myTree[bestFeatLabel][value] = createTree(
            splitDataSet(dataSet, bestFeat, value), subLabels, featLabels) 
    return myTree
    pass

def classify(inputTree, featLabels, testVec):
    """
    函数说明:使用决策树分类
    Parameters:
        inputTree - 已经生成的决策树
        featLabels - 存储选择的最优特征标签
        testVec - 测试数据列表,顺序对应最优特征标签
    Returns:
        classLabel - 分类结果
    """
    classLabel = None
    firstStr = list(inputTree.keys())[0]
    secondDict = inputTree[firstStr]
    featIndex = featLabels.index(firstStr)
    for key in secondDict.keys():
        if testVec[featIndex] == key:
            if type(secondDict[key]).__name__ == 'dict':
                classLabel = classify(secondDict[key], featLabels, testVec)
            else:
                classLabel = secondDict[key]
    return classLabel
    pass

#在根据决策树分类时,一开始出现local variable 'classLabel' referenced before assignment这个问题网友也经常会遇到,

#classify(第三个参数)这里输入的数据要安装顺序对应最优特征标签排列,比如['tearRate', 'astigmatic', 'prescript', 'age']才不会报错。

#而不是安装数据集中特征的排列数据作为输入

举个例子

如果直接从数据集中提取一条数据,作为classify(inputTree, featLabels, testVec)的testVec(测试数据列表)


testVec1_Glass = dataSet_Glass[int(np.random.choice(len(dataSet_Glass)))

有可能数据集的特征排列和测试数据列表(顺序对应最优特征标签)顺序不同。

例如

在预测隐形眼镜类型中数据的Labels依次是age、prescript、astigmatic、tearRate、class其中前4个为样本特征,而在决策树用来决策时,ID3使用信息增量作为特征划分顺序,其使用的特征顺序为最优特征标签序列: ['tearRate', 'astigmatic', 'prescript', 'age'] ,这就会导致两者的不一致。

同时在 classify(inputTree, featLabels, testVec)中也注释了, testVec - 测试数据列表,顺序对应最优特征标签。

解决方案:

第一种:在函数最初给 classLabel 赋值=None,一旦出现 classLabel = None,就可以知道输入的测试样例与决策树的决策顺序不对

第二中(简单):自己按照顺序写一个对于最优特征标签的测试数据


testVec1_Glass = ['normal', 'yes', 'hyper', 'young','hard']
classLabel1_Glass = classify(myTree_Glass, featLabels_Glass, testVec1_Glass[:-1])
print("testVec1_Glass => classLabel1_Glass:", classLabel1_Glass)

第三种:安装最优特征标签到数据集中取测试数据


testVec2_Glass = []
Rand_Glass = int(np.random.choice(len(dataSet_Glass)))
for i in range(len(dataSet_Glass[0])):
    testVec2_Glass.append(dataSet_Glass[Rand_Glass][4-i])
classLabel2_Glass = classify(myTree_Glass, featLabels_Glass, testVec2_Glass[1:])
print("testVec2_Glass => classLabel2_Glass:", classLabel2_Glass)

《点云处理算法》——GROR配准 GROR点云配准 阅读详情

相关推荐

html2canvas 返回的toDataURL()数据为 data:,的解决方法

html2canvas 返回的toDataURL()数据为 data:,的解决方法 我在使用html2canvas的使用, 发现toDataURL() 返回的数据为data:, 而且将数据设置为img的src属性,图片也不能正常显示,我尝试了很多方法,也没有解决出来,经过我不断的百度+自己尝试,终于解决了这个问题。 代码: 这段代码是没有任何问题的,标准html2canvas的demod代码,但就是无法正常将图片previewImg 渲染出来,dataURL 我打印的结果为 data:, 错误的原因是,

java123_PB的博客 5025

解决python报错 UnboundLocalError: local variable ‘labels’ referenced before assignment

这个错有部分是因为在使用if--elif--else语句时, 丢失了else部分导致的

qq_45816346的博客 5135

操作不能完成 (错误 0x00000709) 共享打印机无法连接解决办法

环境:windows Server 2012 + Win10 客户端 问题:使用计算机名和IP地址可以正常连接打印机,但是使用另外的A记录或CN记录无法连接,报此错误 原因:这是打印服务DNS解析的问题 故障补充:假设你的服务器电脑名称叫print01,但是你又建了一条A记录或者CNname 叫PR01,就会发现使用额外的A记录或CN记录就无法连接 故障截图: 操作不能完成 (错误...

瑞哥的博客 3万+

local variable referenced before assignment 原因及解决办法

原因: 在函数内部更改全局变量就会出现此错误。 例一(不会报错): a= 3 def temp(): print(a) temp() #输出的结果为3 在上面一段代码中,函数temp的操作是打印a的值,但函数内部并没有对a进行定义,此时系统会在外部寻找a的值,而我们在函数外部给a赋值为3,这种在函数外部赋值的变量被称为全局变量(global variable),这种情况下运行函数temp不会出错, 例二(会报错): a= 3 def temp(): print(a) ...

黄佳俊的博客 14万+

新手避坑指南:用Silvaco Atlas搞定GaN HEMT电热仿真的完整流程(附代码解读)

本文详细介绍了使用Silvaco Atlas进行GaN HEMT电热特性仿真的完整流程,特别针对新手常见问题提供避坑指南。从软件环境配置、结构定义、网格划分到物理模型设置,逐步解析关键步骤,并附有代码解读和调试技巧,帮助读者快速掌握GaN器件仿真的核心技术。

weixin_29215815的博客 597

sap销售发货的流程_SAP销售订单发货后如何实现发票的自动创建?

问SAP销售订单发货后如何实现发票的自动创建?答业务场景有些快消零售企业,SAP系统单据量大,单据金额少,一般在销售发货后即可确认收入。此时无需人工在系统内操作VF01或者VF04进行开票操作,可将该操作设置成后台作业进行自动批量开票,具体操作如下:1、定义任务:VF06输入完以上信息,点击保存进入以下界面:说明:当前日期的意思是“开票的日期”等于“系统电脑中的当前日期”当前日期+/-...

weixin_42358409的博客 3366

Python 引用全局变量提示:local variable referenced before assignment. 问题解决办法,global使用方法介绍

Python 技术篇-引用全局变量提示:local variable referenced before assignment. 问题解决办法。 可能的情况一般有两种: 情况一:变量没有被赋值直接引用了。 情况二:函数引用全局变量的时候没有声明。 就是说函数里想引用全局变量的话,函数前面要告诉函数这个变量是全局的,不然默认就是函数里能使用的局部变量。

小蓝枣的博客 14万+

【招商银行笔试题汇总】[全网首发]2024-04-23-招商银行春秋招笔试题-三语言题解(CPP/Python/Java)

🏳️ 难难难!!!本次招商银行的笔试算是今年春招最难的场次之一了K小姐所在的公司有 NNN 个部门,编号从 111 到 NNN。由于公司网络系统比较老旧,对于同一个数据 ddd,不同部门记录的值可能不同。数据 ddd 在各部门被记录为 d1,d2,...,dNd_1, d_2, ..., d_Nd1​,d2​,...,dN​。公司提出可以通过会议来实现数据的一致性。每次会议会让相邻编号范围内的所有部门一起参加,如果有超过半数的部门能够对数据 ddd 的值达成共识,那么在此次会议后,参与会议的所有部门会将

春秋招笔试突围 3463

Python报错:local variable referenced before assignment

原因是在定义函数时,使用了与全局变量同名的局部变量 a = 10 b = 10 def func(): if b == 5: a = 5 print(a) funk = func() 这时会报错 ‘UnboundLocalError: local variable ‘a’ referenced before assignment’ 因为函数内部定义了一个与外部变量同名的变量,此时函数会把这个变量定义为局部变量,如果没有赋值则不能调用它。 ...

Wu的博客 1万+

comsol如何实现五厚度的单元模拟?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 471

AI驱动的客户终身价值分析:深入理解公司的收入质量

客户终身价值(Customer Lifetime Value, CLV)是衡量客户在整个生命周期内能为企业带来多少利润的重要指标。传统的CLV计算方法往往过于简化,无法准确反映复杂的客户行为和收入模式。本文旨在介绍如何利用人工智能技术,特别是机器学习方法,构建更精确的CLV预测模型,从而帮助企业深入理解其收入质量。CLV的基本概念和商业意义传统CLV计算方法的局限性基于机器学习的CLV预测方法特征工程和模型选择策略实际应用案例和Python实现首先介绍CLV的基本概念和商业背景。

AI云原生与云计算技术学院 477

python:local variable ‘XXX‘ referenced before assignment的解决办法

问题描述 我们有时候会定义一个全局变量,然后在函数里面引用它,并改变它的值,这时候会报以下的错误: UnboundLocalError:local variable 'XXX' referenced before assignment 只在函数里面引用外面定义的变量而不改变它的值不会报错,如果要改变外面定义的变量的值则需要用到全局变量。 解决办法: 在函数开头用global引用全局变量,即可引用全局变量并对它进行修改: best_mAP=0 def train() global best_mAP mA

qq_40502460的博客 4208

手把手教你学Simulink--四翼无人机滑模控制器设计与仿真

四翼无人机(Quadcopter)滑模控制(Sliding Mode Control, SMC)是一种鲁棒性很强的非线性控制方法,特别适用于存在模型不确定性和外部扰动的情况。滑模控制器通过强制系统状态进入并保持在一个预定义的滑模面上,从而实现对期望轨迹或姿态的精确跟踪。在这个教程中,我们将使用MATLAB和Simulink来设计并仿真一个基于滑模控制策略的四翼无人机系统。

MHD0815的博客 184

解决local variable ‘str‘ referenced before assignment

在使用变量之前,我们需要确保它已经得到初始化或赋值,并且在正确的作用域范围内。与全局变量不同,局部变量的作用范围限制在定义它们的函数、代码块或类中,超出该范围后变量将不再存在。例如,如果在条件语句或循环中使用变量,则需要考虑变量的作用域范围。这可以通过在外部的代码块中声明变量,并在需要使用的地方引用它。​是在函数内部定义并初始化的局部变量,在函数内部使用并输出了其值。在实际的代码编写中,要时刻注意变量的初始化、作用域和引用的顺序,以避免此类错误的出现。​作为函数的参数,可以在函数内部使用。

牛肉胡辣汤 8426

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python 全局变量 重载 错误 local variable referenced before assignment

python2.7 Django 1.8 概述: 当在函数外声明了全局变量,在函数内重新声明,就会覆盖函数外的全局变量,如果函数外或者其他函数对全局变量有引用,此时会导致错误local variable referenced before assignment出现 背景: Django orm 采用代理模型继承和自定义管理器对默认模型拿到的queryset做了调整,为了使查到的数据都是调整后的q...

张昆 4003

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Python报错解决:local variable ‘xxx‘ referenced before assignment

local variable 'xxx' referenced before assignment 指的是'xxx'局部变量没有被声明。一般有如下两种情况 第一种是变量没有赋值 def test(): print(a) 这里a没有赋值,应该改成如下形式 def test(): a = 1 print(a) 第二种是全局变量没有声明 a = 1 def test(): print(a) 在这里a是全局变量,在定义函数中需要进行变量声明,该为如下形式 ..

lipengfei0427的博客 4万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

机器学习算法实战项目—支持向量机(1)—应用简化版SMO算法处理小规模数据集

应用简化版SMO算法处理小规模数据集

wzk4869的博客 1332

PaddlePaddle实现线性回归

在本次我们将使用PaddlePaddle来搭建一个简单的线性回归模型,并利用这一模型预测你的储蓄(在某地区)可以购买多大面积的房子。并且在学习模型搭建的过程中,了解到机器学习的若干重要概念,掌握一个机器学习预测的基本流程。 线性回归的基本概念 线性回归是机器学习中最简单也是最重要的模型之一,其模型建立遵循此流程:获取数据、数据预处理、训练模型、应用模型。 回归模型可以理解为:存在一个点集,用...

orchidofocean的博客 1368

解决报错UnboundLocalError: local variable ‘b‘ referenced before assignment(函数中使用全局变量未声明)

一.问题的起源 笔者在复习python基础知识练习时,分别用for和while遍历用户输入的字符串。while循环中遇到了错误UnboundLocalError: local variable 'b' referenced before assignment,如下图: 二.错误的原因 在查找相关资料后,发现报错原因是:未声明函数内部的b为全局变量,函数内部存在b+=1的赋值语句,编译器默认函数内部的b为局部变量,而不是全局变量b=0,函数内部的局部变量b并未被定义。 三.解决方法 ...

qq_42333202的博客 5218

机器学习实战——3.4 示例:使用决策树预测隐形眼镜类型

机器学习实战——3.4 示例:使用决策树预测隐形眼镜类型

GH0602的博客 1782

解决UnboundLocalError: local variable‘labels‘referenced before assignment

解决UnboundLocalError: local variable ‘labels’ referenced before assignment 解决YOLOv3训练过程错误: UnboundLocalError: local variable ‘labels’ referenced before assignment 被这个错卡了好久,以为是数据集有问题各种检查,又看博客设置全局变量也不管用。 最后看到datasets.py代码里注释的这句,把注释符号删掉,就运行成功了。 ...

dddaaavvviiiddd的博客 3482

python referenced before assignment问题

一、意思:     本地变量var引用前没定义。 二、错误原因     在于python没有变量的声明 , 所以它通过一个简单的规则找出变量的范围 :如果有一个函数内部的变量赋值 ,该变量被认为是本地的,所以如果有修改变量的值就会变成局部变量。 三、产生这个错误的场景(2.7) val=9 def test(flag): if flag:

basycai的博客 3万+

解决UnboundLocalError: local variable ‘time‘ referenced before assignment

在Python开发中,经常会遇到的错误。这个错误通常发生在在一个函数内部,尝试访问一个在函数内定义的局部变量之前。这篇文章将详细介绍这个错误的原因,并提供几种常见的解决方法。

牛肉胡辣汤 1万+

python报错:local variable 'xxx' referenced before assignment

python报错:local variable ‘xxx’ referenced before assignment 解决方法 : global 关键字 在外面定义了一个变量 xxx ,然后在python的一个函数里面引用这个变量,并改变它的值,结果报错local variable ‘xxx’ referenced before assignment, 错误的意思就是xxx这个变量在引用前还没有定...

qq_39779233的博客 1195

两种UnboundLocalError: local variable 'xxx' referenced before assignment情况的解决方法

1)在子程序中对全局变量的操作,比如 val=9 def test(flag): if flag: val = 1 else: print 'Error' return val test(0) 错误提示:UnboundLocalError: local variable 'val' referenced bef...

atarik@163.com 5万+

python中的全局变量,出现referenced before assignment的解决方案

原文出处:http://crazier9527.iteye.com/blog/406682 不注意全局变量时的程序如: CONSTANT = 0 def modifyConstant() : print CONSTANT CONSTANT += 1 return if __name__ == '__main__' : ...

软件开发随记 1773
上一篇: 神经网络实现4位加法器上海大学智能计算系统
下一篇: 数据库Not Exists 表示全称量词笔记
wait021
博客等级 码龄5年 9粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值