С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/25: Рейтинг темы: голосов - 25, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 18

Найти максимальный из элементов списка с чётным индексом

27.03.2022, 01:44. Показов 5759. Ответов 10

Студворк — интернет-сервис помощи студентам
Дано :
Получить из пользовательского ввода список элементов через пробел и найти максимальный из элементов списка с чётным индексом

Моё решение:

Python
1
2
3
4
5
6
7
8
a = input('Введите список через пробел: ').split()
i = 0
b = []
for element in a:
    if i % 2 == 0:
        b.append(int(element))
i += 1
print('Максимальный элемент списка с чётным индексом равен: ', max(b))

Всё работает, если пользователь вбивает числа. Но если среди них ввести строку, то возникает ошибка. Как окультурить эту ошибку? Т.е. если пользователь, введёт хоть букву среди элементов списка, то на выводе написать ему что-то типа 'введите только численные значения'. Я знаю это можно как-то сделать при помощи метода isdigit(). Но вот всю голову сломал, не доходит как Помогите пожалуйста
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.03.2022, 01:44
Ответы с готовыми решениями:

В строках с четным индексом необходимо найти максимальный элемент
Составить программу алгоритма обработки двумерного массива А 10:10. В строках с четным индексом необходимо найти максимальный элемент. Если...

Найти максимальный элемент массива под четным индексом
Заполнить массив элементами на интервале ввести элементы на экран, найти максимальный элемент под четным индексом

Найти максимальный элемент среди компонент массива с четным индексом
Дан вещественный вектор длины n.Найти max элемент среди компонент с четным индексом

10
24 / 18 / 7
Регистрация: 19.02.2022
Сообщений: 43
27.03.2022, 05:25
Добавить в 5 строку проверку element.isdigit(), увеличение индекса на 7 строке перенести в тело цикла.
Python
1
2
3
4
5
6
7
8
a = input('Введите список через пробел: ').split()
i = 0
b = []
for element in a:
    if i % 2 == 0 and element.isdigit():
        b.append(int(element))
    i += 1
print('Максимальный элемент списка с чётным индексом равен: ', max(b))
Код между 1 и 8 строками можно заменить на одну строку:
Python
1
b = [element for index, element in enumerate(a) if element.isdigit() and index % 2 == 0]
1
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
27.03.2022, 10:19
Цитата Сообщение от Feelmore Посмотреть сообщение
'введите только численные значения'
молча убирает))
Python
1
2
3
4
5
6
7
def get_only_digits_list(input_str: str) -> list:
    ret_list = []
    for i in input_str.split():
        if i.isdigit():
            ret_list.append(int(i))
    return ret_list
print(get_only_digits_list(input('Введите список через пробел: ')))
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.03.2022, 11:30
Такой вариант:

Python
1
2
3
4
5
6
7
while True:
    _input = input('-> ')
    if not _input.replace(' ', '').isdigit():
        print('Вводите цифры и пробелы')
    else:
        l = list(map(int, _input.split()))
        print(max(list(filter(lambda x: x%2==0, l))))
0
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 18
27.03.2022, 13:00  [ТС]
Цитата Сообщение от InfiSupaSta Посмотреть сообщение
Добавить в 5 строку проверку element.isdigit(), увеличение индекса на 7 строке перенести в тело цикла.
Python
1
2
3
4
5
6
7
8
a = input('Введите список через пробел: ').split()
i = 0
b = []
for element in a:
    if i % 2 == 0 and element.isdigit():
        b.append(int(element))
    i += 1
print('Максимальный элемент списка с чётным индексом равен: ', max(b))
Я наверное невнятно объяснил суть проблемы. Надо чтобы при введении пользователем чего-то кроме цифр, выскакивало сообщение, что это не правильный ввод, надо вводить только числа и пробелы. А в вашем варианте при введении чисел и букв, буквы просто игнорируются и выводит максимальный элемент из чисел.
Если же вводить одни буквы, то вылетает системная ошибка ValueError, а надо бы чтобы вылазило предупреждение, мол введи только числа и пробелы.
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.03.2022, 13:12
https://www.online-python.com/KIZOARB6UV
Миниатюры
Найти максимальный из элементов списка с чётным индексом  
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.03.2022, 13:37
Требуется как-то иначе сделать?

Добавлено через 9 минут
Небольшое изменение на случай, если в списке отсутствуют четные элементы:
Python
1
2
3
4
5
6
7
8
9
10
11
while True:
    _input = input('-> ')
    if not _input.replace(' ', '').isdigit():
        print('Вводите цифры и пробелы')
    else:
        l = list(map(int, _input.split()))
        lst = list(filter(lambda x: x%2==0, l))
        if lst == []:
            print('Четных элементов нет')
        else:
            print(max(lst))
Добавлено через 14 минут
Цитата Сообщение от Feelmore Посмотреть сообщение
А в вашем варианте при введении чисел и букв, буквы просто игнорируются и выводит максимальный элемент из чисел.
Похоже, Вы не мой вариант тестировали...
1
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 18
27.03.2022, 14:01  [ТС]
Цитата Сообщение от Пифагор Посмотреть сообщение
Такой вариант:

Python
1
2
3
4
5
6
7
while True:
    _input = input('-> ')
    if not _input.replace(' ', '').isdigit():
        print('Вводите цифры и пробелы')
    else:
        l = list(map(int, _input.split()))
        print(max(list(filter(lambda x: x%2==0, l))))
Ваш код, я так понял, определяет максимальный чётный по счёту элемент. А надо чтобы определялся максимальный элемент с чётным индексом. То есть первый по счёту элемент имеет индекс 0 и это чётный индекс, второй по счёту элемент имеет индекс 1 - это не чётный индекс и т.д.
У вас выдаёт правильным ответом 4, а должно быть 77.
И ещё. У вас бесконечно предлагает пользовательский ввод. Не могли бы вы предложить вариант, где ввод был бы единственным?

Добавлено через 10 минут
Цитата Сообщение от Пифагор Посмотреть сообщение
Требуется как-то иначе сделать?

Добавлено через 9 минут
Небольшое изменение на случай, если в списке отсутствуют четные элементы:
Python
1
2
3
4
5
6
7
8
9
10
11
while True:
    _input = input('-> ')
    if not _input.replace(' ', '').isdigit():
        print('Вводите цифры и пробелы')
    else:
        l = list(map(int, _input.split()))
        lst = list(filter(lambda x: x%2==0, l))
        if lst == []:
            print('Четных элементов нет')
        else:
            print(max(lst))
А, теперь до меня дошло, что вы имели ввиду - максимальное чётное число в списке у вас определяет. А надо максимальный элемент из всех элементов имеющих чётный индекс, начиная с 0, где 0 - это чётный индекс. Например, имеем список: [777 4 8 10 24]. Максимальным элементом с чётным индексом здесь будет первый элемент 777, так как у него чётный индекс (0) и число 777 максимальное из всех других с чётным индексом.
Наверное я не качественно поставил условие задачи в начале
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.03.2022, 14:52
Лучший ответ Сообщение было отмечено Feelmore как решение

Решение

Так?
Python
1
2
3
4
5
6
7
while True:
    _input = input('-> ')
    if not _input.replace(' ', '').isdigit():
        print('Вводите цифры и пробелы')
    else:
        l = list(map(int, _input.split()))
        print(max(list(filter(lambda x: l.index(x)%2==0, l))))
1
0 / 0 / 0
Регистрация: 05.01.2022
Сообщений: 18
27.03.2022, 16:31  [ТС]
Цитата Сообщение от Пифагор Посмотреть сообщение
Так?
Python
1
2
3
4
5
6
7
while True:
    _input = input('-> ')
    if not _input.replace(' ', '').isdigit():
        print('Вводите цифры и пробелы')
    else:
        l = list(map(int, _input.split()))
        print(max(list(filter(lambda x: l.index(x)%2==0, l))))
Да, спасибо. Теперь определяет верно, но как сделать чтобы это было единоразово? То есть, чтобы вывело результат один раз, а если хочешь ещё - заново запускай код

Добавлено через 6 минут
Ну в принципе я доработал. Тупо брейканул

Python
1
2
3
4
5
6
7
8
while True:
    _input = input('-> ')
    if not _input.replace(' ', '').isdigit():
        print('Вводите цифры и пробелы')
    else:
        l = list(map(int, _input.split()))
        print(max(list(filter(lambda x: l.index(x)%2==0, l))))
        break
Спасибо вам большое, уважаемый Пифагор
0
 Аватар для Пифагор
2172 / 1655 / 840
Регистрация: 10.01.2015
Сообщений: 5,207
27.03.2022, 16:45
Лучший ответ Сообщение было отмечено Feelmore как решение

Решение

Цитата Сообщение от Feelmore Посмотреть сообщение
Да, спасибо. Теперь определяет верно, но как сделать чтобы это было единоразово?
Как вариант, можно не единоразово, с выходом из цикла по команде:
Python
1
2
3
4
5
6
7
8
9
10
while True:
    _input = input('-> ')
    if _input == 'exit':
        print('Пока')
        break
    elif not _input.replace(' ', '').isdigit():
        print('Вводите цифры и пробелы')
    else:
        l = list(map(int, _input.split()))
        print(max(list(filter(lambda x: l.index(x)%2==0, l))))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.03.2022, 16:45
Помогаю со студенческими работами здесь

Найти максимальный элемент массива с чётным индексом. Реализовать задачу через динамический массив
Найти максимальный элемент массива с чётным индексом. Реализовать задачу через динамический массив.

Подсчитать количество отрицательных элементов с четным индексом и сумму положительных с нечетным индексом
полный ноль в VBA, ничего даже в голову не лезет

Найти суммы элементов в каждой строке матрицы с четным индексом и занести их в массив
Задана матрица A(K,L) найти сумму элементов в каждом ряду с парным индексом и создать с них одномерный массив

Создать массив из 10 случайных чисел найти произведение всех элементов с чётным индексом
Создать массив из 10 случайных чисел найти произведение всех элементов с чётным индексом

Найти минимальный элемент массива с четным индексом и среднее арифметическое всех положительных элементов
Заполнить массив значениями функции y=7sin(0,4x) для всех значений x от –10 до 10, взятых с шагом 0,5. Найти минимальный элемент массива с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru