Ваша проблема с циклом:
for i in list:
p = i.strip().split("|")
max_speed = p[7]
if max_speed > a:
a = max_speed
print(i)
pass
else:
print("...")
Это будет печатать «i» каждый раз, когда max_speed> a, поэтому, если ваши максимальные скорости находятся в порядке возрастания, он будет печатать каждую машину.Что вам нужно сделать, это сохранить автомобиль с максимальной скоростью, а затем распечатать его в конце.
max_speed_car = ''
for i in list:
p = i.strip().split("|")
max_speed = p[7]
if max_speed > a:
a = max_speed
max_speed_car = i
pass
else:
print("...")
print(max_speed_car)
что-то подобное должно сделать это.Вот полный код, который отлично работал на моем компьютере: (я использую python 3.6)
def topSpeed(cars):
y = input("car type:")
with open(r"\cars.txt","r") as f:
for l in f.readlines():
list = []
p = l.strip().split("|")
type = p[1]
max_speed = p[7]
if y == type:
list.append(l)
a = 0
max_speed_car = ''
for i in list:
p = i.strip().split("|")
max_speed = int(p[7])
if (max_speed > a):
a = max_speed
max_speed_car = i
else:
print("...")
print(max_speed_car)