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

Помешательство

15.12.2021, 10:19. Показов 896. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пропитавшись, так сказать, насквозь тем сумбуром, которым наполнены были его любимые книги, гидальго бредил с открытыми глазами о поединках, битвах, волшебниках, любовных объяснениях и всевозможных диких приключениях, и считал все это действительностью, лучше которой и представить себе нельзя.

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

Функция obsession() принимает произвольное число аргументов-строк и произвольное число именованных аргументов из перечня:
length – наибольшая длина выбираемого слова;
letters – буквы, которых не должно быть в слове;
register – первая буква в верхнем регистре, значение по умолчанию True.

Функция должна вернуть список строк, отобранных по переданным условиям, отсортированный сначала по длине по возрастанию, в случае одинаковой – по алфавиту.
Пример 1
Ввод
Python
1
2
3
4
5
6
7
madness = ["Duels", "Battles", "Wizards",
          "princesses", "Madness"]
dreams = {
   "length": 9,
   "letters": "xyzb"
}
print(*obsession(*madness, **dreams), sep="\n")
Вывод
Code
1
2
3
Duels
Battles
Madness
Пример 2:
Ввод
Python
1
2
3
4
5
6
madness = ["Novels", "knights", "honor",
          "dignity", "Wild", "delirium"]
dreams = {
   "length": 7
}
print(*obsession(*madness, register=False, **dreams), sep="\n")
Вывод
Code
1
2
3
honor
dignity
knights
Пример 3
Ввод
Python
1
2
3
4
5
6
madness = ["Adventures", "mills", "battles",
          "squires", "armor", "helmet", "Spear"]
dreams = {
   "letters": "qi"
}
print(*obsession(*madness, register=False, **dreams), sep="\n")
Вывод
Code
1
2
3
armor
helmet
battles
0
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
15.12.2021, 11:23
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
def less_than(word, length):
    return len(word) <= length
 
 
def check_letter(word, letters):
    for letter in letters:
        if letter in word:
            return False
    return True
 
 
def check_first_sym(word, is_title):
    return is_title == word.istitle()
 
 
def obsession(*madness, **dreams):
    result = []
    for word in madness:
        if dreams.get('length'):
            res = less_than(word, dreams.get('length'))
            if not res:
                continue
        if dreams.get('letters'):
            res = check_letter(word, dreams.get('letters'))
            if not res:
                continue
        res = check_first_sym(word, dreams.get('register', True))
        if not res:
            continue
        result.append(word)
    return sorted(result, key=lambda x: (len(x), x))
 
 
madness = ["Adventures", "mills", "battles",
           "squires", "armor", "helmet", "Spear"]
dreams = {
    "letters": "qi"
}
print(*obsession(*madness, register=False, **dreams), sep="\n")
Добавлено через 10 минут
Сам только учусь, если не совсем правильно, то кто-нибудь поправит.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
def less_than(word, length):
    return len(word) <= length['length']
 
 
def check_letter(word, letters):
    for letter in letters['letters']:
        if letter in word:
            return False
    return True
 
 
def check_first_sym(word, is_title):
    return is_title.get('register', True) == word.istitle()
 
 
def obsession(*madness, **dreams):
    result = []
    funcs = []
    if dreams.get('length'):
        funcs.append(less_than)
    if dreams.get('letters'):
        funcs.append(check_letter)
    funcs.append(check_first_sym)
 
    for word in madness:
        if all(func(word, dreams) for func in funcs):
            result.append(word)
    return sorted(result, key=lambda x: (len(x), x))
 
 
madness = ["Adventures", "mills", "battles",
           "squires", "armor", "helmet", "Spear"]
dreams = {
    "letters": "qi"
}
print(*obsession(*madness, register=False, **dreams), sep="\n")
0
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
15.12.2021, 11:42
Python
1
2
3
4
5
6
def obsession(*args, register=True, **kwargs):
    tmp = filter(lambda x: (x[0].islower(), x[0].isupper())[register] and \
                           not any(map(lambda y: y in x, kwargs.get('letters', ''))) and \
                           len(x) <= (float('inf'), kwargs.get('length'))['length' in kwargs], args)
 
    return sorted(sorted(tmp), key=len)
Добавлено через 26 секунд
Bash
1
2
3
4
5
6
7
8
9
10
11
Duels
Battles
Madness
 
honor
dignity
knights
 
armor
helmet
battles
1
2431 / 1474 / 633
Регистрация: 01.11.2021
Сообщений: 2,269
15.12.2021, 12:57
enx,
еле разобрал, что написано, новое узнал для себя.
0
enx
 Аватар для enx
1190 / 766 / 277
Регистрация: 05.09.2021
Сообщений: 1,772
15.12.2021, 13:20
Alexarh, не бери с этого пример главное, это версия для ТС, чтобы ему вопросов позадавали, как там и что.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru