Ошибка при вызове функции (Python)

Мне нужно создать функцию, принимающую список, и возвращающую максимальное значение из этого списка. Пробовал разными способами передать список как аргумент, ошибки те же. Реально ли вообще передать именно список как аргумент, а не кортежи и словари? Поэтому def fun(*a): и def fun(**a): НЕ подойдут.

Фрагмент неработающего кода:

def fun(a):
    max = 0
    for i in a:
        if a[i] > max:
            max = a[i]
    return max
a = [1, 5, 8, 3, 2]

print(fun(a))

Сама ошибка: https://i.imgur.com/7uo38fq.png


Ответы (2 шт):

Автор решения: MBo

Либо так (индексы ведь вам не нужны)

for x in a:
    if x > max:
        max = x

либо так (если индексы для какой-то цели понадобятся)

for i in range(len(a)):
    if a[i] > max:
        max = a[i]

Кроме того, выбор нуля для начального значения максимума не сработает при наличии отрицательных. Лучше использовать первый элемент.

Ну а про встроенную функцию max вы же знаете?

→ Ссылка
Автор решения: Іван Шнір
def fun(a):
    maxx = 0
    print(a)
    for i in range(0,len(a)):
        if a[i] > maxx:
            maxx = a[i]
    return maxx
a = [1, 5, 8, 3, 2]

print(fun(a))

Вам надо поочереди проверять число ли в списке больше максимального.

→ Ссылка