鱼C论坛

 找回密码
 立即注册
查看: 1845|回复: 3

[已解决]有关for循环内,if条件判断内变量作用域的问题

[复制链接]
发表于 2021-2-16 23:19:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. # 读取数据并清洗各个数据并保存为字典列表
  2. with open('F:\数据分析\python\案例\练习1:商铺数据清洗\商铺数据.csv','r',encoding='utf8') as f:

  3.     # 读取整个文件,第一行不要
  4.     for i in f.readlines()[1:]:

  5.         # 取得每行的classify,name等数据
  6.         data = i.split(',')
  7.         classify = data[0]
  8.         name = data[1]
  9.         comment_count = comment_processor(data[2])
  10.         star = data[3]
  11.         price = price_processor(data[4])
  12.         address = data[5]
  13.         comment_list = comment_list_processor(i.split(",")[-1].split('                                '))

  14.         # 如果没有缺失数据,将每行的数据转换为字典
  15.         if '缺失数据' not in [comment_count, price, comment_list]:

  16.             # comment_list拆为3个指标
  17.             quality = comment_list[0]
  18.             evi = comment_list[1]
  19.             service = comment_list[2]

  20.             # 每行数据储存为一个字典
  21.             temp_dic = {
  22.                 "classify": classify,
  23.                 "name": name,
  24.                 "star": star,
  25.                 "price": price,
  26.                 "address": address,
  27.                 "quality": quality,
  28.                 "evi": evi,
  29.                 "service": service
  30.             }

  31.         # 在IF外试图打印temp_dic
  32.         print(temp_dic)

  33.             # 将每行的字典数据添加到列表里
  34.             data_list.append(temp_dic)
复制代码

大家看看这个代码中IF判断体内的temp_dic变量,当我试图在IF外打印temp_dic时,python就会报错,请问是什么原因?报错的提示是:“NameError: name 'temp_dic' is not defined”
为此,我设计了一个简单的程序:
  1. a = [1, 2, 3, 4]
  2. b = 0
  3. for i in range(7):
  4.     b += 1
  5.     if i not in a:
  6.         c = b + 1
  7.     # 在if外打印c   
  8.     print(c)
复制代码

虽然在IF内外打印的结果不一样,但是都可以打印的,请问是什么原因呢?
最佳答案
2021-2-17 00:30:09
先定义,再用。这设计到,假如判断条件完全没进去,就没有定义,打印不了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-2-16 23:24:46 | 显示全部楼层
我想明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-16 23:41:44 From FishC Mobile | 显示全部楼层
因为最后一个i是6,6 not in a所以可以,你要是把7改成5你再把if放外边看看能不能行,肯定就不能行了。另外在里在外打印次数也不相同
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-17 00:30:09 | 显示全部楼层    本楼为最佳答案   
先定义,再用。这设计到,假如判断条件完全没进去,就没有定义,打印不了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-27 20:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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