使用类导入 - 仅用于最后一行

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])

您的这个块将始终覆盖变量color1model1year1的值,因此最后一行是您在完成循环处理时对这些变量的影响。有多种方法可以解决它。其中一个跟随。

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”中的值放入列表中,则可以稍后访问它们以所需格式打印出来。

以上是关于使用类导入 - 仅用于最后一行的主要内容,如果未能解决你的问题,请参考以下文章

Laravel-Excel 导入 Excel 文件----为什么只获取到最后一行数据?

你能解释一下最后一行的“m 1”吗?

字典列表仅保留最后一行

材料表内部 onClick 仅显示最后一行值

在 foreach 中调用类仅最后一次调用有效

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk