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

Используя замыкания функций, объявите внутреннюю функцию, которая преобразует строку из списка целых чисел

10.12.2022, 01:00. Показов 1414. Ответов 8

Студворк — интернет-сервис помощи студентам
Используя замыкания функций, объявите внутреннюю функцию, которая преобразует строку
из списка целых чисел, записанных через пробел, либо в список, либо в кортеж. Тип
коллекции определяется параметром type внешней функции. Если type = 'list' , то
используется список, иначе – кортеж. Далее, на вход программы поступает две строки:
первая – это значение для параметра type; вторая – список целых чисел, записанных через

пробел. С помощью реализованного замыкания преобразовать эту строку в
соответствующую коллекцию. Результат работы замыкания выведите на экран.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.12.2022, 01:00
Ответы с готовыми решениями:

Используя замыкания функций, объявите внутреннюю функцию, которая принимает в качестве параметров фамилию и имя
1) Используя замыкания функций, объявите внутреннюю функцию, которая принимает в качестве параметров фамилию и имя, а затем, заносит в...

Используя замыкания функций, объявить внутреннюю функцию
Доброго дня! Не могу решить задачку. На вход программы поступает две строки: первая с тегом, вторая с содержимым. Используя замыкания...

Используя замыкания функций, определите вложенную функцию
Используя замыкания функций, определите вложенную функцию, которая бы увеличивала значение переданного параметра на 3 и возвращала бы...

8
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
10.12.2022, 10:26
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def foo(typ):
    def bar(stri):
        if typ=='list':
            return list(map(int,stri.split(' ')))
        else:
            return tuple(map(int,stri.split(' ')))
            
    return bar
    
    
t=input("type=")
s=input("s=")
f=foo(t)
print(f(s))
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
10.12.2022, 11:11
Лучший ответ Сообщение было отмечено Kwilmajor как решение

Решение

Catstail, точнее так, чтобы при каждом вызове не выполнять блок if;

Python
1
2
3
4
5
6
7
8
def foo(typ):
    if typ == 'list':
        def bar(stri):
            return list(map(int,stri.split(' ')))
    else:
        def bar(stri):
            return tuple(map(int,stri.split(' ')))
    return bar
3
 Аватар для Aviz__
2741 / 2050 / 507
Регистрация: 17.02.2014
Сообщений: 9,470
10.12.2022, 11:13
Kwilmajor,
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
def inner_typ_setter(typ_str='list'):
    def inner(src: str):
        tmp_list = [int(c) for c in src.split()]
        return tmp_list if typ_str == 'list' else tuple(tmp_list)
    return inner
 
 
list_maker = inner_typ_setter()
int_list = list_maker("1 2 3")
print(int_list, type(int_list), sep=' --> ')
#######
tuple_maker = inner_typ_setter("blaBlaType")
str_list = tuple_maker("11 22 33")
print(str_list, type(str_list), sep=' --> ')
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
10.12.2022, 11:14
Aviz__, так же проблема: при каждом вызове вычисляется if.
0
10.12.2022, 11:18

Не по теме:

Цитата Сообщение от Рыжий Лис Посмотреть сообщение
проблема
кому, что)). я мыслю не проблемами...

0
0 / 0 / 0
Регистрация: 21.05.2020
Сообщений: 1
09.12.2023, 23:17
Тоже долго не понимал и до сих пор не до конца эту тему понял. Но это задание тестирует является ли изначальный объект type(input()) == tuple? => проверка если первая введенная строка input() == 'list' то преобразован ли кортеж в список. Пример программы:

Python
1
2
3
4
5
def collect(tp, string):
    if tp == 'list': return list(string)
    return string
tp, lst = input(), tuple(map(int, input().split()))
print(collect(tp, lst))
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
10.12.2023, 10:43
Apiz, неверно, внешняя функция должна иметь один параметр. Т.е. мы создаем объекты функций, в которых некоторые аргументы уже предустановлены:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def str_to(type):
    def to_list(s):
        return s.split()
    def to_tuple(s):
        return tuple(s.split())
    if type == 'list':
        return to_list
    else:
        return to_tuple
 
str_to_list = str_to('list')
str_to_tuple = str_to('tuple')
print(str_to_list('1 2 3'))
print(str_to_tuple('1 2 3'))
# ['1', '2', '3']
# ('1', '2', '3')
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38173 / 21108 / 4307
Регистрация: 12.02.2012
Сообщений: 34,704
Записей в блоге: 14
10.12.2023, 10:45
Рыжий Лис, хоть и прошел год, но замечу, что Ваша оптимизация... нехороша. И вот почему. Берем Ваш код и сохраняем результат в переменную:

Python
1
2
3
4
5
6
7
8
9
10
def foo(typ):
    if typ == 'list':
        def bar(stri):
            return list(map(int,stri.split(' ')))
    else:
        def bar(stri):
            return tuple(map(int,stri.split(' ')))
    return bar
 
q=foo("list")
Прекрасно. Но теперь я должен помнить, что q связана с list. И никто не мешает мне забыть об этом, и применить эту функцию в надежде получить кортеж.

А вот мое решение не напрягает память программиста.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2023, 10:45
Помогаю со студенческими работами здесь

Используя функцию filter, написать функцию для удаления из списка целых чисел всех элементов с нечетными значениями
- Используя функцию filter, написать функцию для удаления из списка целых чисел всех элементов с нечетными значениями.

Используя функцию filter, написать функцию для удаления из списка целых чисел всех элементов, совпадающих с образцом
- Используя функцию filter, написать функцию для удаления из списка целых чисел всех элементов, совпадающих с образцом. Заранее...

Объявите функцию, которая принимает строку на кириллице и преобразовывает ее в латиницу
Объявите функцию, которая принимает строку на кириллице и преобразовывает ее в латиницу, используя следующий словарь для замены русских...

Строка: Написать функцию, которая преобразует строку в верхний регистр и возвращает указатель на новую строку
Сказали решить string - ами Вот задание char * Uppercase (char * str1); - функция преобразует строку в верхний регистр и возвращает...

Вызовите внутреннюю функцию замыкания и отобразите на экране результат ее работы
Используя замыкания функций, объявите внутреннюю функцию, которая принимает два параметра a , b , а затем, возвращает строку в формате:...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru