有谁懂 发表于 2021-2-16 23:19:06

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

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

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

      # 取得每行的classify,name等数据
      data = i.split(',')
      classify = data
      name = data
      comment_count = comment_processor(data)
      star = data
      price = price_processor(data)
      address = data
      comment_list = comment_list_processor(i.split(",")[-1].split('                              '))

      # 如果没有缺失数据,将每行的数据转换为字典
      if '缺失数据' not in :

            # comment_list拆为3个指标
            quality = comment_list
            evi = comment_list
            service = comment_list

            # 每行数据储存为一个字典
            temp_dic = {
                "classify": classify,
                "name": name,
                "star": star,
                "price": price,
                "address": address,
                "quality": quality,
                "evi": evi,
                "service": service
            }

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

            # 将每行的字典数据添加到列表里
            data_list.append(temp_dic)
大家看看这个代码中IF判断体内的temp_dic变量,当我试图在IF外打印temp_dic时,python就会报错,请问是什么原因?报错的提示是:“NameError: name 'temp_dic' is not defined”
为此,我设计了一个简单的程序:
a =
b = 0
for i in range(7):
    b += 1
    if i not in a:
      c = b + 1
    # 在if外打印c   
    print(c)
虽然在IF内外打印的结果不一样,但是都可以打印的,请问是什么原因呢?

有谁懂 发表于 2021-2-16 23:24:46

我想明白了{:10_257:}

qq1151985918 发表于 2021-2-16 23:41:44

因为最后一个i是6,6 not in a所以可以,你要是把7改成5你再把if放外边看看能不能行,肯定就不能行了。另外在里在外打印次数也不相同

Stubborn 发表于 2021-2-17 00:30:09

先定义,再用。这设计到,假如判断条件完全没进去,就没有定义,打印不了
页: [1]
查看完整版本: 有关for循环内,if条件判断内变量作用域的问题