如何在Python中编写此函数?

时间:2016-12-10 01:42:03

标签: python python-3.x

*我是初学者...... 我的朋友试图帮助我一点,但我似乎无法解决它。我不确定该做什么,所以任何帮助都会非常感激。我在averageMPG中得到以下错误,"名称统计城市是参数和全球"。我也不是真的确定如何在我的readData函数中编写这两个函数,如您所见。问题出在图片中。我没有在b部分取得成功所以我没有继续前进,

def readData(carmodelData_city):

    global stats_city,stats_hwy
    infile=open("carModelData_city", 'r')
    stats_city=[]
    for s in infile.read.split():
        stats.append(float(s))
        return stats_city


def read_Data(carmodelData_hwy):
    global stats_city,stats_hwy
    infile=open("carModelData_hwy", 'r')
    stats_hwy=[]
    for s in infile.read.split():
        stats.append(float(s))
        return stats_hwy        


def averageMPG(stats_city, stats_hwy):
       global stats_city,stats_hwy  
       totals=sum(stats_city)
       length=len(stats_city)
       avg1=totals/length
       print("The averge mpg city is", avg1)
       totals1=sum(stats_hwy)
       length1=len(stats_hwy)
       avg2=totals/length
       print("The average mpg highway is", avg2)
       average=(avg1+avg2)/2
       print("The combined averge mpg is", average)


def main():
global stats_city,stats_hwy
stats_city=readData("carModelData_city", "r")
stats_hwy=read_Data("carModelData_hwy", "r")



[enter image description here][1]main()

2 个答案:

答案 0 :(得分:1)

您将函数参数命名为stats_city,并将其声明为global值。这两件事是不相容的。

AFAICT,您的代码实际上并不需要任何内容​​global,因此请停止声明所有内容global,您应该没问题。

好吧,反正那个特定的错误。这里大量过度使用global感觉非常像货物崇拜编程,你还有许多其他问题(例如infile.read.split()会尝试拆分文件的read方法;你忘了parens,所以它实际上并不是调用 read来获取数据。当我怀疑你想要完成循环并返回累积值时,你也会在每个循环的第一次迭代结束时返回。你需要在这里学到更多基础知识;请与教授或导师交谈。

答案 1 :(得分:0)

另外,你的" stats.append()"电话应该是" stats_city.append"在第一个函数和" stats_hwy.append"在第二。除非您在回访中调整您的标识,否则您将在每个函数中重复一次后返回。