dmitrylogvinov, Вы в корне неправильно подходите к обучению. Вам нужно больше времени проводить с учебником и изучать стандартные библиотеки (и в первую очередь -
встроенные функции, обращая особое внимание на их параметры), а не пытаться решать задачи "в лоб", раз за разом городя конструкции в стиле Delphi из базового синтаксиса, примерно одинакового для каждого языка. "Батарейки" в Python присутствуют как раз для того, чтобы не изобретать велосипеды.
Задача решается просто и элегантно:
from itertools import count
def lastmax(*sequence):
return max(zip(sequence, count()))
assert lastmax(1, 2, 3) == (3, 2)
assert lastmax(1, 2, 1, 2, 1) == (2, 3)
assert lastmax(1, 2, 3, 4, 5) == (5, 4)
assert lastmax(1, 1, 1, 1, 1) == (1, 4)
Те же самое, но без itertools:
def lastmax(*sequence):
return max(zip(sequence, range(len(sequence))))
Ещё вариант:
from operator import itemgetter
def lastmax(*sequence):
return max(enumerate(sequence), key=itemgetter(1, 0))[::-1]
И ещё:
def lastmax(*sequence):
return max({v: i for i, v in enumerate(sequence)}.items())
Есть и ещё несколько более эзотерических вариантов - например, через heapq.