Возникли проблемы с написанием фрагмента кода для возврата максимального значения списка, используя эту конкретную структуру - PullRequest
0 голосов
/ 28 октября 2019

Я борюсь с тем, что, вероятно, является довольно простой ошибкой, но здесь это независимо: вопрос требует кусок кода, использующего следующую структуру, чтобы вернуть максимальное значение списка. Я извиняюсь, если это что-то действительно простое, но я очень новичок в этом

Использование функции max() недопустимо

def lmax(lst):
    i=0
    val=0
    while i < len(lst):
        a=lst[i]
        if a>val:
            lst[i]=val
        i=i+1
    return val

Просто возвращает 0, независимо от ввода списка

Ответы [ 2 ]

3 голосов
/ 28 октября 2019

Проблема в том, что вы устанавливали значение в списке на текущее наибольшее значение lst[i]=val, когда в действительности вы хотели сохранить его. Я также сократил использование, используя цикл for вместо while.

def lmax(lst):
    largest = lst[0]
    for current in lst:
        if current>largest:
            largest = current
    return largest
1 голос
/ 28 октября 2019

Основная проблема с вашим кодом заключается в том, что вы устанавливаете

lst[i]=val

вместо настройки

val = lst[i]


Было бы проще для-loop, однако.

def lmax(lst):
    val=0
    for i in lst:
        if i > val:
            val = i
    return val

Также обратите внимание, что ваша функция не будет работать, если все ваши значения являются отрицательными числами. В этом случае val должен быть установлен первым элементом в списке. и проверьте каждый последующий «я» против этого.
Вот как будет выглядеть ваша переменная:

val= lst[0]

...