我正在一个函数中创建一个列表,我试图将该列表传递给其他几个函数,以便它们可以与该列表一起使用,但是我现在得到的代码给出了未定义的错误'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()
您未在函数外部将返回值作为变量捕获。将loadFile(x)
更改为data_set = loadFile(x)