鱼C论坛

 找回密码
 立即注册
查看: 986|回复: 2

local variable 'val' referenced before assignment

[复制链接]
头像被屏蔽
发表于 2021-8-22 09:06:30 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-22 09:26:00 | 显示全部楼层
本帖最后由 hrpzcf 于 2021-8-22 09:27 编辑

进入了if shi in transPrivinceName.keys():这个分支,当然就没有val这个变量,下面的text.append(val)就报错。你的代码逻辑还要修改
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-22 11:38:40 | 显示全部楼层
本帖最后由 gdmao002 于 2021-8-22 12:36 编辑

  1. for i in f:
  2.     threeCode = ''
  3.     text = i.replace('\n', '').split(',')
  4.     textCode = text[4]
  5.     year = text[0]
  6.     shi = text[6]
  7.     dw = text[2]
  8.     if shi in transPrivinceName.keys():
  9.         threeCode = transPrivinceName[shi]
  10.     else:
  11.         for key, val in transPrivinceName.items():
  12.             if key in dw:
  13.                 threeCode = val
  14.                 break  ###一旦找到就停止本次循环
  15.             else:
  16.                 threeCode = ''
  17.     if threeCode != '':
  18.         text.append(val)
  19.         f1.write(','.join(text) + '\n')  ###再次补充上
  20.     else:
  21.         text.append(textCode[:2])
  22.         f1.write(','.join(text) + '\n')  ###这个是直接写入,手工验证等真的需要的时候再找出来
  23.         f2.write(','.join(text) + '\n')
复制代码

这是你错误内的代码
然后我给你说下你为何错误
你可以想下如果你for i in f: 【第二行】的时候 第一个 判断的时候走的是【第九行】if shi in transPrivinceName.keys():
然后执行了这个 【第十八行】if threeCode != '':  那么【第十九行】里面的变量var哪里来?它又是指向哪里?所以你的错误就是在变量未定义之前 给他使用了。导致了报错,明白了吗
解决办法 前面定义个var变量的赋值 或者 整个循环逻辑修整下。毕竟你的代码只有你懂要做什么。我们最多只是提示下你要怎么操作,不可能面面俱到帮你修改到位,毕竟代码是你写的。我也通过你错误判断你这至少都要将近1000行代码了吧?那么别人更不可能帮你修改了,最多就提示你要怎么做
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-25 06:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表