使用类导入 - 仅用于最后一行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用类导入 - 仅用于最后一行相关的知识,希望对你有一定的参考价值。
试图让我的代码使用我的类打印出文本文件中的所有内容,但它只打印最后一行。
关于如何使我的循环工作以使其完成每一行的任何想法?有3行,它们以逗号分隔。
Class Cars:
def __init__(self,color, model, year):
self.color = color
self.model = model
self.year = year
def getcar:
return '{:<10} {:<10} {:<10}'.format(self.color,self.model,self.year)
Text File:
Blue Corolla 2012
Green Civic 2011
Black CRV 2015
dataFile = open('carData.txt.txt')
for line in dataFile:
lineData = line.split(',')
color1 = int(lineData[0])
model1 = float(lineData[1])
year1 = float(lineData[2])
car_1= Cars.Cars(car1,color1,make1,year1)
car_2= Cars.Cars(car1,color1,make1,year1)
car_3= Cars.Cars(car1,color1,make1,year1)
car_4= Cars.Cars(car1,color1,make1,year1)
car_5= Cars.Cars(car1,color1,make1,year1)
print(car_1.getcar())
print(car_2.getcar())
print(car_3.getcar())
print(car_4.getcar())
print(car_5.getcar())
Output:
Black CRV 2015
Black CRV 2015
Black CRV 2015
Desired Output:
Blue Corolla 2012
Green Civic 2011
Black CRV 2015
答案
在你的for循环中
for line in dataFile:
lineData = line.split(',')
color1 = int(lineData[0])
model1 = float(lineData[1])
year1 = float(lineData[2])
您可以通过拆分您读取的行来提取颜色,模型,年份的值,但不是将它们保存在任何地方。因此,它们基本上“丢失”,除了在退出for循环后仍然保留的最后一行,这就是为什么你得到相同的输出。
理想情况下,在for循环中,您可以将这些值保存到数组或列表中。
另一答案
每次运行循环时,都会覆盖变量的值。
for line in dataFile:
lineData = line.split(',')
color1 = int(lineData[0])
model1 = float(lineData[1])
year1 = float(lineData[2])
您的这个块将始终覆盖变量color1
,model1
和year1
的值,因此最后一行是您在完成循环处理时对这些变量的影响。有多种方法可以解决它。其中一个跟随。
class Cars:
def __init__(self,color, model, year):
self.color = color
self.model = model
self.year = year
def getcar(self):
return '{:<10} {:<10} {:<10}'.format(self.color,self.model,self.year)
cars = []
dataFile = open('cars.txt')
for line in dataFile:
lineData = line.split(' ')
color1 = (lineData[0])
make1 = (lineData[1])
year1 = float(lineData[2])
cars.append(Cars(color1,make1,year1))
for car in cars:
print(car.getcar())
这里每次迭代时,从文件中读取一行,读取这些值,创建一个对象并将其添加到现有列表中。然后迭代该列表逐个打印所有对象。
希望有所帮助!
另一答案
我相信这段代码可能会为您提供解决方案:
colors = []
models = []
years = []
dataFile = open('carData.txt')
for line in dataFile:
lineData = line.split(',')
colors.append(lineData[0])
models.append(lineData[1])
years.append(lineData[2])
for i in range(3):
print(colors[i] + " " + models[i] + " " + years[i])
如果将“carData.txt”中的值放入列表中,则可以稍后访问它们以所需格式打印出来。
以上是关于使用类导入 - 仅用于最后一行的主要内容,如果未能解决你的问题,请参考以下文章