Форум сайта python.su
Есть словарь. Нужно ввести текст с клавиатуры. После ввода текста нужно сгруппировать буквы текста в списки однородных цифр и вывести на экран эти списки. Мне непонятно то, как значение буквы в словаре, например, 12, поместить в списки единиц и двоек и как эту процедуру исполнить к всему введённому тексту.
dict= {' ‘: ’ ‘,’а': ‘ 1’, ‘б’: ‘ 2’, ‘в’: ‘ 25’,'г': ‘ 33’, ‘д’: ‘ 12’}
a = list(map(str, input(“Введите текст: ”)))
Требуемый результат:
Введите текст: абвгд
Столбцы:
11
222
33
5
Отредактировано Oleg1975Spb (Июнь 20, 2021 14:52:02)
Прикреплённый файлы:
Tekstik1.py (175 байт)
Офлайн
Oleg1975Spb
Есть словарь.
Oleg1975SpbМне непонятно зачем вам словарь?
сгруппировать буквы текста в списки однородных цифр
Oleg1975SpbМне непонятно почему вы число 12 называете буквой. Оно не буква.
как значение буквы в словаре, например, 12
Oleg1975SpbВ питоне вообще нет процедур. Есть функции. Но у вас нет ни одной функции. Может вам про них почитать?
и как эту процедуру исполнить к всему введённому тексту
a = [[] for i in range(10)] for c in text: try: a[int(c)].append(c) except: pass print(a)
Офлайн
Oleg1975SpbПовезло тебе, что я в детстве прошёл толстенную книжку с головоломками из СССР
Есть словарь. Нужно ввести текст с клавиатуры. После ввода текста нужно сгруппировать буквы текста в списки однородных цифр и вывести на экран эти списки.
>>> def f(): ... dct = {'а': '1', 'б': '2', 'в': '25','г': '33', 'д': '12'} ... text = input('Введите текст: ') ... out = [''] * 10 ... for ch in text: ... for digit in dct[ch]: ... value = out[int(digit)] ... out[int(digit)] = value + digit ... for i in out: ... if i: ... print(i) ... >>> f() Введите текст: абвгд 11 222 33 5 >>>
Отредактировано py.user.next (Июнь 21, 2021 00:12:03)
Офлайн
py.user.next
приветствую
а что за книжка с головоломками?)
У меня дурацкий вопрос: а почему в решении так out = * 10?
Oleg1975Spb
У меня не такое изящное и короткое решение получилось, как у уважаемого py.user.next ))
def setup_dict(keys, dict): """Создает новый словарь на основе заданного, используя ключи введенные пользователем""" new_dict = {} for key in keys: new_dict[key] = dict[key] return new_dict def create_sorted_values(dict): """Очищает значения словаря от пробелов, строки конвертирует в списки цифр""" value_list = [] for item in list(dict.values()): for sign in list(item): if sign != ' ': value_list.append(sign) sorted_values = sorted(value_list) return sorted_values def main(): dict = {' ': ' ', 'а': ' 1', 'б': ' 2', 'в': ' 25', 'г': ' 33', 'д': ' 12'} a = list(map(str, input("Введите текст: "))) given_dict = setup_dict(a, dict) value_list = create_sorted_values(given_dict) # Выводит на печать строки одинаковых символов for id in range(len(value_list)-1): if value_list[id+1] == value_list[id]: print(value_list[id], end='') else: print(value_list[id]) print(value_list[len(value_list)-1]) if __name__ == '__main__': main()
Офлайн
Ocean“Твоё свободное время”. Там прикольные задачи, не Мурзилка ни разу и не Весёлые картинки. Некоторые задачи по несколько месяцев решить не мог. Давно это было. Они были интересные, но решать это их никак не помогало.
а что за книжка с головоломками?)
OceanПотому что он разбирает цифры, а их десять всего - 0 1 2 3 4 5 6 7 8 9. Соответственно, мы можем использовать индексы массива (ну, списка в данном случае, массивы - в языке C, этот приём оттуда) для поиска ячейки, куда сохраняем поступающие данные - очередную цифру.
У меня дурацкий вопрос: а почему в решении так?out = [''] * 10
>>> [''] * 10 ['', '', '', '', '', '', '', '', '', ''] >>>
>>> lst = [''] * 10 >>> lst ['', '', '', '', '', '', '', '', '', ''] >>> id(lst[0]), id(lst[1]) (140583817108144, 140583817108144) >>> >>> s = '' >>> id(s) 140583817108144 >>>
Отредактировано py.user.next (Июнь 21, 2021 01:35:47)
Офлайн
py.user.nextПоняла теперь!) Спасибо
Потому что он разбирает цифры, а их десять всего - 0 1 2 3 4 5 6 7 8 9. Соответственно, мы можем использовать индексы массива (ну, списка в данном случае, массивы - в языке C, этот приём оттуда) для поиска ячейки, куда сохраняем поступающие данные - очередную цифру.
py.user.nextДа, это очень круто!
Дальше при получении цифры 1, например, мы берём элемент списка с таким же индексом, там находится пустая строка, и мы к этой пустой строке прибавляем цифру один в строковом виде и сохраняем этот результат обратно в список уже вместо пустой строки. В следующий раз при получении цифры 1, мы берём элемент списка с таким же индексом, там находится строка с цифрой 1, и мы к этой строке с цифрой 1 прибавляем цифру один в строковом виде и сохраняем этот результат обратно в список уже вместо строки с цифрой 1. Так мы получаем строку с цифрами 11 по индексу 1 в списке со строками. И так для каждой цифры работает. Мы применили сишный приём. В языке C работа с индексами в массиве идёт очень плотно, там массивы делались такими специально.
py.user.next
“Твоё свободное время”. Там прикольные задачи, не Мурзилка ни разу и не Весёлые картинки. Некоторые задачи по несколько месяцев решить не мог. Давно это было. Они были интересные, но решать это их никак не помогало.
Прикреплённый файлы:
golovolomki.jpg (86,4 KБ)
Офлайн
OceanДа она одна во Вселенной. Можешь скачать её во ВКонтакте. В Яндексе 100500 ссылок на pdf. Попробуй там какое-нибудь задание сделать про Докшина и Скобелёва или там откуда приехали мальчики на пикник и какое там число у них. Короче, не фуфло типа олимпиадных задачек сегодняшних.
Обложка такая была? )
Отредактировано py.user.next (Июнь 21, 2021 03:42:08)
Прикреплённый файлы:
tsv_profi.jpg (55,6 KБ)
Офлайн
py.user.next
спасибо! скачала )
Порешала)
Корнеев не пекарь, так как ездит на работу, а пекарь ходит пешком
Докшин не пекарь, так как ездит на работу, а пекарь ходит пешком
Пекарь или Мареев, или Скобелев
Докшин не может быть милиционером, потому что в этом случае Корнеев не может быть врачом (живет рядом), инженером (знаком с Докшиным), пекарем (ездит на работу, а не ходит пешком).
Корнеев не может быть милиционером, потому что тогда Докшин не может быть врачем(живет рядом), пекарем (ездит, а не ходит пешком), инженером (хорошо знакомы)
Следовательно, Корнеев и Докшин - могут быть только врачом и инженером
Так как пара Корнеев и Докшин - это врач и инженер, Мареев не может быть милиционером потому что милиционер старше врача и инженера, но Мареев младше Докшина
Следовательно, милиционер - Скобелев
Если Скобелев милиционер, то Мареев - пекарь
Так как Корнеев и Скобелев знакомы, то Корнеев не может быть инженером, он врач
Так как Корнеев врач, то Докшин - инженер
Итого: Корнеев - врач, Докшин - инженер, Мареев - пекарь, Скобелев - милиционер
py.user.next, а что там за вторая задачка была про пикник?) Эт примерно на какой странице книги? Не могу найти
Отредактировано Ocean (Июнь 21, 2021 09:39:58)
Офлайн
чет не могу это представить математически
соседи ездит к 1 1 и в д 1 1 и в м м п с м п играют ездит к 1 в д и м п с 1 м
Отредактировано AD0DE412 (Июнь 21, 2021 10:51:56)
Офлайн
AD0DE412
математически можно через матрицу “принятых решений”
вот пошагово ее заполнила с примечаниями
Картинка здесь
Отредактировано Ocean (Июнь 21, 2021 13:47:03)
Офлайн