Задача индекс максимума последовательности

Недавно начал изучение python и параллельно решаю задачки с http://pythontutor.ru/. И застрял на задаче по циклам while.

Текст задачи: Условие
Последовательность состоит из натуральных чисел и завершается числом 0. Определите индекс наибольшего элемента последовательности. Если наибольших элементов несколько, выведите индекс первого из них. Нумерация элементов начинается с нуля.

Мой код решения:

Тем не менее, два варианта не проходят. Например: Входные данные:2 1 3 0 Ответ: 2 (у меня выдает 1)

Я в общем-то вижу ошибку, но не понимаю как реализовать, что бы решалось не только если цифры вводятся не равномерно по возрастаниюубыванию (такие варианты все решились)

4 ответа 4

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

И ваш код можно улучшить, если взять за начальные значения не -1 и 0, а значение первого элемента и его индекс.

Чтобы найти индекс наибольшего элемента последовательности, можно использовать встроенную функцию max():

Код принимает целые числа от пользователя—одно число на каждой новой строчке, пока не встретится ноль ( ‘0’ ). Встроенная функция iter(function, end_value) генерирует последовательность, вызывая функцию function() до тех пор пока не встретится end_value .

Встроенная функция map() преобразует строки в числа в данном случае.

Встроенная функция enumerate() генерирует пары индекс, значение. lambda i_v: i_v[1] функция извлекает значение из пары, служа ключём для сравнения, таким образом пары сравниваются по соответствующим значениям.

max() возвращает пару с наибольшим значением.

Использование max() в Питон коде более предпочтительно по сравнению с while-циклом более подходящим для C кода для решения задачи "Поиск наибольшего элемента в последовательности" в Питоне. Старайтесь использовать подходящие идиомы для выбранного языка. Если сама задача неинтересна, а просто ошибку в while-цикле хотите найти, то спрашивайте именно об этом.

Читайте также:  Как зарегистрировать службу в windows
Please note that GitHub no longer supports your web browser.

We recommend upgrading to the latest Google Chrome or Firefox.

Join GitHub today

GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.

python-codes.-part-2 / while «Индекс максимума последовательности» "The index of the maximum sequence"

Users who have contributed to this file

# Последовательность состоит из натуральных чисел и завершается числом 0. Определите индекс наибольшего элемента последовательности.
# Если наибольших элементов несколько, выведите индекс первого из них. Нумерация элементов начинается с нуля.
n = -1
m = 0
i = -1
while n != 0:
n = int(input())
i += 1
if n > m:
m = n
maxi = i
print(maxi)
  • © 2019 GitHub, Inc.
  • Terms
  • Privacy
  • Security
  • Status
  • Help

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Недавно начал изучение python и параллельно решаю задачки с http://pythontutor.ru/. И застрял на задаче по циклам while.

Текст задачи: Условие
Последовательность состоит из натуральных чисел и завершается числом 0. Определите индекс наибольшего элемента последовательности. Если наибольших элементов несколько, выведите индекс первого из них. Нумерация элементов начинается с нуля.

Мой код решения:

Тем не менее, два варианта не проходят. Например:
Входные данные:2 1 3 0 Ответ: 2 (у меня выдает 1)

Я в общем-то вижу ошибку, но не понимаю как реализовать, что бы решалось не только если цифры вводятся не равномерно по возрастаниюубыванию (такие варианты все решились)

4 Answers

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

Читайте также:  После установки трейнера гта 4 не запускается

И ваш код можно улучшить, если взять за начальные значения не -1 и 0, а значение первого элемента и его индекс.

Попробуй вот так
Я изменил вывод так, чтобы он отображал не только индекс значения, но и само значение. Чтобы не путаться. Да и алгоритм поправил, ибо корень всех бед ‘index=-1’, а считать нужно с единицы

Чтобы найти индекс наибольшего элемента последовательности, можно использовать встроенную функцию max():

Код принимает целые числа от пользователя—одно число на каждой новой строчке, пока не встретится ноль ( ‘0’ ). Встроенная функция iter(function, end_value) генерирует последовательность, вызывая функцию function() до тех пор пока не встретится end_value .

Встроенная функция map() преобразует строки в числа в данном случае.

Встроенная функция enumerate() генерирует пары индекс, значение. lambda i_v: i_v[1] функция извлекает значение из пары, служа ключём для сравнения, таким образом пары сравниваются по соответствующим значениям.

max() возвращает пару с наибольшим значением.

Использование max() в Питон коде более предпочтительно по сравнению с while-циклом более подходящим для C кода для решения задачи «Поиск наибольшего элемента в последовательности» в Питоне. Старайтесь использовать подходящие идиомы для выбранного языка. Если сама задача неинтересна, а просто ошибку в while-цикле хотите найти, то спрашивайте именно об этом.

Оцените статью
Добавить комментарий

Adblock
detector