我正在编写一个程序,提取汽车的最低和最高MPG额定值。汽车的信息存储在CSV文件中。我相信我编写了正确的最小/最大函数,但是,就像在所有行/列中循环一样,我也写了它。
我们只应包括某些类别的汽车以进行数据提取。汽车的类别是CSV数据的第一列,其索引为[0]。我要遍历的MPG等级在第10列,索引为[9]。
我们不应在最小/最大MPG计算中包括“货车”,“小型货车”或“卡车”类别。有没有一种方法可以基于这些字符串进行排除,并循环遍历未排除的其余MPG?
最后,一旦完成,就应该将这些结果写入新文件。有什么办法可以打开正在写入的文件,以检查我的代码是否有效?
当我尝试打印新创建的文件的内容时(基于用户输入),我收到一条错误消息,指出该文件不在目录中。任何帮助将不胜感激。
注意:我们不允许进口熊猫。
当前代码:
print("Welcome to EPA Mileage Calculator")
yearChoice = int(input("What year would you like to view data for? (2008 or 2009): "))
while yearChoice != 2008 and yearChoice != 2009:
print("Invalid input, please try again")
yearChoice = int(input("What year would you like to view data for? (2008 or 2009): "))
saveResults = input("Enter the filename to to save results to: ")
if yearChoice == 2008:
fileIn = open("epaVehicleData2008.csv", "r")
fileIn.readline()
minMPG, maxMPG = [], []
for line in fileIn:
line = line.strip()
dataList = line.split(",")
minMPG.append(line[9])
print(min(minMPG))
print(max(maxMPG))
if yearChoice == 2009:
fileIn = open("epaVehicleData2009.csv", "r")
fileIn.readline()
minMPG, maxMPG = [], []
for line in fileIn:
line = line.strip()
dataList = line.split(",")
minMPG.append(line[9])
print(min(minMPG))
print(max(maxMPG))
fileIn = open(saveResults, "r")
for line in fileIn:
print(line)
答案 0 :(得分:1)
首先,您在代码的两个位置都有这样的错误:
line = line.strip()
dataList = line.split(",")
minMPG.append(line[9])
在第三行中,您将获得值line[9]
。那是该行索引9处的字符,而不是列表索引9处的值。改为使用minMPG.append(dataList[9])
。
接下来,您可以使用if语句检查车辆类型不在特定组中。像
if dataList[9] not in ['van', 'truck', 'minivan']:
minMPG.append(dataList[9])
对于最后一个问题,您尚未在saveResults
中保存任何内容,也没有创建文件,因此在尝试读取文件时出现错误是很有意义的。关于如何做到这一点有很多疑问和答案。查看其中一些内容,然后问一个单独的问题,如果您无法使代码正常工作。