Python代码中的错误,将列表作为参数传递

问题描述 投票:1回答:1

我正在一个函数中创建一个列表,我试图将该列表传递给其他几个函数,以便它们可以与该列表一起使用,但是我现在得到的代码给出了未定义的错误'data_set'。那我在做什么错呢?我正在使用data_set.clear(),因为该程序旨在与3个csv文件一起使用。

[以前,代码是通过全局定义我的列表而工作的,但是我们被要求使用非全局变量来完成此任务,现在我一直在脑海里摸索着几天,试图找出问题所在。

参数还不是很好,所以我想我错过了一些东西。通过menu_option函数调用函数。

我在这里错过了什么。试图放入完整的脚本,但是堆栈不允许我用太多的代码发布问题,因此我用单独的代码将其缩减为单独的代码,以显示我如何调用函数

def print_menu():
    print("ACME WEATHER DATA APP")
    print("1) Choose weather data file")
    print("2) See data for selected day")
    print("3) Calculate average statistics for the data")
    print("4) Print a scatterplot of the average temperatures")
    print("0) Quit program")

def loadFile(x):
    data_set = []
    data_set.clear()
    with open(x, "r") as readfile:
        csv_reader = csv.reader(readfile, delimiter= ';')
        for row in csv_reader:
            data_set.append(row)
        loadFile.data_set_attr = data_set
    print("Loaded weather data from", (x[0:-4]).capitalize())
    print()
    return data_set    

def avgDay(x, data_set):
    for line in data_set:
        if(len(x) == 5 and (x[3:5] + "-" + x[0:2]) in line[0]):
           print("The weather on", x, "was on average", line[2], "centigrade")


def lowHigh(x, data_set):
    for line in data_set:
        if(len(x) == 5 and (x[3:5] + "-" + x[0:2]) in line[0]):
            print("The lowest temperature was", line[3], "and the highest temperature was", line[4])

这是我用来在需要时调用其他功能的功能的一部分。

def menu_number():
    number = int(input("Choose what to do: "))
    if (number) == 1:
        x = input("Give name of the file: " )
        loadFile(x)
        print_menu()
        menu_number()

    elif (number) == 2:
        x = input("Give a date (dd.mm): ")
        avgDay(x, data_set)
        lowHigh(x, data_set)
        rain(x, data_set)
        print_menu()
        menu_number()

    elif (number) == 3:
        avgMonth(data_set)
        avgLow(data_set)
        avgHigh(data_set)
        print_menu()
        menu_number()
python-3.x list function parameter-passing
1个回答
0
投票

您未在函数外部将返回值作为变量捕获。将loadFile(x)更改为data_set = loadFile(x)

© www.soinside.com 2019 - 2024. All rights reserved.