【问题标题】:python : no output or only an empty list was producedpython:没有输出或只产生一个空列表
【发布时间】:2014-10-24 05:23:07
【问题描述】:
index1 = 0
singlechar = []
def SINGLE_CHAR_VAR(filename):
    firdict = vars_indents(filename)[0]
    firtup_keys = firdict.keys()
    firtup_val = firdict.values()
    for keys in firtup_keys:
        for values in firtup_val:
            index = 0
            for index in range(len(values)):
                firvallist = firtup_val[index]
                for item in firvallist:
                    if len(item[0]) == 1:
                        singlechar.append({'ERROR_TYPE': 'SINGLE_CHAR_VAR', 'LINE_NUMBER': str(keys),'COLUMN': str(item[1]),'INFO': str(item[0]),'SOURCE_LINE': str(lines[keys - 1])})
                    else:
                        continue
                return singlechar

这是我的代码,但没有产生输出,或者当我在 return 语句中移动时产生了一个空列表。我希望它能给我一个字典列表作为输出。

有人可以教我如何解决这个问题吗?

谢谢

【问题讨论】:

    标签: python output return


    【解决方案1】:

    您应该首先调用该函数以获取输出。

    SINGLE_CHAR_VAR(filename)
    

    你怎么能期望一个函数在不被调用的情况下运行?

    【讨论】:

      【解决方案2】:

      return != print。你需要做`print SINGLE_CHAR_VAR(filename)

      return 会将值发送给调用该函数的任何对象。在这种情况下,将返回值/字符串,但您需要对其进行处理,因此需要 print。或者,如果您希望函数本身打印输出,您可以将 return 替换为 print。但是,在这种情况下,该值将不会被传递,并且您将无法存储它。它真的归结为什么对你有用/你想要什么。 `

      【讨论】:

      • 抱歉给您带来了困惑。所以我试过了。 'print SINGLE_CHAR_VAR('naughty.py')' 但它会打印 'None' 作为其输出。我怎样才能让它打印类似于 {'ERROR_TYPE': 'SINGLE_CHAR_VAR', 'LINE_NUMBER': str(4),'COLUMN': str(89),'INFO': str('r'),'SOURCE_LINE ': str('我们在这里')}
      【解决方案3】:

      我认为问题出在 return 语句中。您应该在 外部 for 循环 正下方缩进 return 语句,但不要在 inner for 循环 下方。如下所示:

      def SINGLE_CHAR_VAR(filename):
          firdict = vars_indents(filename)[0]
          firtup_keys = firdict.keys()
          firtup_val = firdict.values()
          for keys in firtup_keys:
              for values in firtup_val:
                  index = 0
                  for index in range(len(values)):
                      firvallist = firtup_val[index]
                      for item in firvallist:
                          if len(item[0]) == 1:
                              singlechar.append({'ERROR_TYPE': 'SINGLE_CHAR_VAR', 'LINE_NUMBER': str(keys),'COLUMN': str(item[1]),'INFO': str(item[0]),'SOURCE_LINE': str(lines[keys - 1])})
                          else:
                              continue
          return singlechar # indent of return changed
      

      【讨论】:

      • 我也尝试过更改 return 语句的缩进,但它给了我 [] 作为它的输出...
      • 您应该上传文件或您正在处理的任何数据,以便更轻松地解决问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多