Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 28.07.2022
Сообщений: 23
1

Всем доброго дня. Написать функцию, которая может состоять из разных элементов

16.08.2022, 12:20. Показов 1144. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Если все элементы списка целые числа, то функция должна посчитать сумму
нечетных чисел.

Если хотя бы один элемент не является целым числом, то выкинуть ошибку
TypeError с сообщением "Все элементы списка должны быть целыми числами"

Задачу стоит выполнить с помощью одного цикла

Написать блок if __name__ == '__main__', в котором
нужно описать обработку исключения try-except-else-finally

Python
1
2
3
4
5
6
7
8
def odd_sum(int_list: list) -> int:
    summa = 0
    for i in range(len(int_list)):
           if int_list[i] % 2 != 0:
                summa = summa + int_list[i]
        else:
            TypeError("Все элементы списка должны быть целыми числами")
    return summa
Есть вопросы по правильности функции, и подскажите блок исключений в нее можно встроить, или необходимо отдельно его описывать ? Спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.08.2022, 12:20
Ответы с готовыми решениями:

Всем доброго дня. Электронные часы
Электронные часы показывают время в формате ЧЧ:ММ:СС Отредактировать функцию get_seconds,...

Всем доброго дня. Почему полнотекстовый поиск
Почему полнотекстовый поиск прни поиски слова МЕЧТА-8 выводит все слова мечта, а МЕЧТА-8* вообще...

Всем доброго дня. Видеонаблюдению с компьютера.Нужна консультация
Нужна программа, которая объединит в себе разные типы регистраторов и протоколы работы их программ....

В зависимости от ведённого времени получите сообщение с пожеланием доброго утра, доброго дня, доброго вечера, спокойный
Плииз! Помогите с учёбой! В общем суть задания: В зависимости от ведённого времени (от 0 до 24)...

В зависимости от введенного значения времени желает доброго утра, доброго дня, доброго вечера, доброй ночи.
Нужно составить программу, которая требует ввода времени дня и в зависимости от введенного значения...

5
2430 / 1473 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
16.08.2022, 13:05 2
Наверно, что-то типа этого лучше, если числа должны быть целые, а не четные.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def odd_sum(int_list: list) -> int:
    summa = 0
    for n in int_list:
        if not isinstance(n, int):
            raise TypeError("Все элементы списка должны быть целыми числами")
        summa += n
    return summa
 
 
if __name__ == '__main__':
    tasks = ([1, 2, 3, 4, 5], [1, 2, 3, 4, '5'], [1, 2, 3, 4, 5.5], [1, 2, 3, 4, None])
    for task in tasks:
        try:
            print(odd_sum(task))
        except TypeError as te:
            print(te)
1
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,415
16.08.2022, 13:08 3
Python
1
2
3
4
5
6
def odd_sum(lst: list) -> int | str:
    arr = [i if isinstance(i, int) else '_' for i in lst]
    try:
        return sum([el for el in arr if el & 1])
    except TypeError:
        return 'Все элементы списка должны быть целыми числами'
1
2430 / 1473 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
16.08.2022, 13:14 4
Лучший ответ Сообщение было отмечено cappucino как решение

Решение

Про нечетные пропустил.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def odd_sum(int_list: list) -> int:
    summa = 0
    for n in int_list:
        if not isinstance(n, int):
            raise TypeError("Все элементы списка должны быть целыми числами")
        if n % 2 == 1:
            summa += n
    return summa
 
 
if __name__ == '__main__':
    tasks = ([1, 2, 3, 4, 5], [1, 2, 3, 4, '5'], [1, 2, 3, 4, 5.5], [1, 2, 3, 4, None])
    for task in tasks:
        try:
            print(odd_sum(task))
        except TypeError as te:
            print(te)
1
0 / 0 / 0
Регистрация: 28.07.2022
Сообщений: 23
17.08.2022, 08:24  [ТС] 5
Если не сложно, поясните по работе блока: (Вроде бы все просто, не могу никак понять до конца его, и для чего применяют)
И еще интерпретатор при запуске выводит в консоль число "9". Поясните пожалуйста.
if __name__ == '__main__':
0
2430 / 1473 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
17.08.2022, 10:17 6
Цитата Сообщение от cappucino Посмотреть сообщение
if __name__ == '__main__':
https://pythonru.com/uroki/fun... inajushhih
Цитата Сообщение от cappucino Посмотреть сообщение
И еще интерпретатор при запуске выводит в консоль число "9". Поясните пожалуйста.
Это результат вычисления для списка, в нем все числа целые, поэтому считаем сумму нечетных.
Python
1
[1, 2, 3, 4, 5]
В остальных списках не все числа целые
Python
1
[1, 2, 3, 4, '5'], [1, 2, 3, 4, 5.5], [1, 2, 3, 4, None]
, поэтому возникает исключение, в блоке try оно перехватывается и в блоке except обрабатывается - мы выводим сообщение об ошибке.
1
17.08.2022, 10:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.08.2022, 10:17
Помогаю со студенческими работами здесь

Написать функцию, которая по номеру n определяет соответствующее название дня недели
Написати функцию, которая по номеру n определяет соответствующее название дня недели. type день...

Всем доброго времени суток. Как написать код (задание на фото)?
Всем доброго времени суток. Как написать код (задание на фото)?

Написать функцию с указателями, которая устанавливает месяц и число по порядковому номеру дня в году
написать функцию с указателями, которая устанавливает месяц и число по порядковому номеру дня в...

Написать функцию, которая распечатывает полную дату по номеру дня в году c учетом високосности
Как написать функцию, которая распечатывает полную дату по номеру введенного пользователем дня в...

Написать функцию, которая бы пробегала по всем записям одной таблицы и заносила бы их id в запрос на место Х
Добрый день! Помогите написать функцию, которая бы пробегала по всем записям одной таблицы и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru