python:没有输出或者只生成了一个空列表

2024-09-30 22:19:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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语句周围移动时,生成了一个空列表。我希望它能给我一个字典列表作为输出。你知道吗

有人能教我怎么修吗?你知道吗

谢谢


Tags: inforindexvarvalkeysfilenameitem
3条回答

我认为问题出在返回语句中。应该将return语句缩进外部for循环的正下方,而不是内部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

您应该首先调用函数来获得输出。你知道吗

SINGLE_CHAR_VAR(filename)

你怎么能指望一个函数在没有被调用的情况下运行呢?

return!=print。您需要执行“打印单个字符变量(文件名)”

return将值发送给调用该函数的任何对象。在本例中,返回的是value/string,但是您需要对它做些什么,因此需要print。或者,如果希望函数本身打印输出,可以将return替换为print。但是,在这种情况下,值将不会被传递,并且您将无法存储它。它实际上只取决于什么对你有用/你想要什么。 `你知道吗

相关问题 更多 >