Форум сайта python.su
Листинг ниже показывает, как можно выводить текст и значения букв под каждой буквой текста. Просьба модифицировать код с тем, чтобы построчно выводились в одной строке каждое слово из введенного текста и значения букв этого слова, взятые из словаря в начале кода.
import itertools from itertools import chain mydict= {' ': '0','а': '1', 'б': '2', 'в': '3','г': '4', 'д': '5','е': '6', 'ё': '7', 'ж': '8', 'з': '9', 'и': '1', 'й': '2', 'к': '3', 'л': '4', 'м': '5', 'н': '6', 'о': '7', 'п': '8', 'р': '9', 'с': '1', 'т': '2', 'у': '3', 'ф': '4','х': '5', 'ц': '6', 'ч': '7', 'ш': '8', 'щ': '9', 'ъ': '1', 'ы': '2', 'ь': '3', 'э': '4', 'ю': '5', 'я': '6', 'a': '1', 'b': '2', 'c': '3', 'd': '4', 'e': '5', 'f': '6', 'g': '7', 'h': '8', 'i': '9', 'j': '1', 'k': '2', 'l': '3', 'm': '4', 'n': '5', 'o': '6', 'p': '7', 'q': '8', 'r': '9', 's': '1', 't': '2', 'u': '3', 'v': '4', 'w': '5', 'x': '6', 'y': '7', 'z': '8', 'А': '1', 'Б': '2', 'В': '3', 'Г': '4', 'Д': '5', 'Е': '6', 'Ё': '7', 'Ж': '8', 'З': '9', 'И': '1', 'Й': '2', 'К': '3', 'Л': '4', 'М': '5', 'Н': '6', 'О': '7', 'П': '8', 'Р': '9', 'С': '1', 'Т': '2', 'У': '3', 'Ф': '4', 'Х': '5', 'Ц': '6', 'Ч': '7', 'Ш': '8', 'Щ': '9', 'Ъ': '1', 'Ы': '2', 'Ь': '3', 'Э': '4', 'Ю': '5', 'Я': '6', 'A': '1', 'B': '2', 'C': '3','D': '4', 'E': '5', 'F': '6', 'G': '7', 'H': '8', 'I': '9', ' J': '1', 'K': '2', 'L': '3', 'M': '4', 'N': '5', 'O': '6', 'P': '7', 'Q': '8', 'R': '9', 'S': '1', 'T': '2', 'U': '3', 'V': '4', 'W': '5', 'X': '6', 'Y': '7', 'Z': '8'} while True: a = input("Введите текст: ") b = list(map(str,a)) с = list(chain.from_iterable(b)) d = list(map(lambda x: mydict.get(x), с)) e = list(chain.from_iterable(d)) f = list(map(lambda x: int(x), e)) spis = [] spis_0 = [] spis_1 = [] spis_2 = [] spis_3 = [] spis_4 = [] spis_5 = [] spis_6 = [] spis_7 = [] spis_8 = [] spis_9 = [] for number in f: if number == 0 in f: spis.append(number) spis_0.append(number) elif number == 1 in f: spis.append(number) spis_1.append(number) elif number == 2 in f: spis.append(number) spis_2.append(number) elif number == 3 in f: spis.append(number) spis_3.append(number) elif number == 4 in f: spis.append(number) spis_4.append(number) elif number == 5 in f: spis.append(number) spis_5.append(number) elif number == 6 in f: spis.append(number) spis_6.append(number) elif number == 7 in f: spis.append(number) spis_7.append(number) elif number == 8 in f: spis.append(number) spis_8.append(number) else: spis.append(number) spis_9.append(number) print() print("Буквы введенного текста: ",' '.join(a)) print("Значения букв текста: ",' '.join(map(str,spis)))
Отредактировано Oleg1975Spb (Июнь 29, 2021 16:00:56)
Офлайн
Oleg1975SpbТы должен сделать функцию, которая обрабатывает один текст, который в неё подаётся (не вводится из консоли). Потом надо ввести текст из консоли, разбить его на слова и потом в цикле для каждого слова вызвать эту функцию, передавая в неё очередное слово введённого текста.
Просьба модифицировать код с тем, чтобы построчно выводились в одной строке каждое слово из введенного текста и значения букв этого слова, взятые из словаря в начале кода.
Офлайн
py.user.nextСпасибо, только я в своем обучении Питону до функций ещё не дошёл, а код нужен срочно - друг попросил сделать такую программу.
Офлайн
Oleg1975SpbНу, вот пришло время, значит. Сделай функцию, которая увеличивает буквы в слове. Затем введи строку, разбей её на слова, передай каждое слово в свою функцию, получи из функции новое слово и выведи это полученное слово на отдельной строке.
только я в своем обучении Питону до функций ещё не дошёл
Oleg1975SpbНо ты же не можешь её сделать. Надо учиться сначала.
друг попросил сделать такую программу
Офлайн
py.user.nextНовое слово - полдела, надо ещё вывести буквенные значения слова вместе с этим словом, вот в чём проблема, а каждое слово необязательно функцию делать, можно через for, просто for нужен вложенный, я на этом моменте и застопорился.
# Исходный текст: txt=input("Введите текст: ") # Все буквы маленькие: txt=txt.lower() # Результат преобразования: print(txt) # Разбивка текста на подстроки: L=txt.split(" ") # Результат разбивки: print(L) # Переменные: n=0 # Перебор элементов списка: for k in range(len(L)): # Отбрасываем небуквенные символы: w=L[k].strip(".,:;-!?") # Если текст непустой: if len(w)!=0: # Отображение слова и его длины: print(w.ljust(12),"-", len(w)) # Количество слов: n+=1
Отредактировано Oleg1975Spb (Июнь 30, 2021 15:12:15)
Офлайн
Oleg1975SpbНу, ты даже слово само вывести не можешь. Я тебе об этом и говорю: тебе надо подучиться просто какую-то элементарную хрень делать.
Новое слово - полдела, надо ещё вывести буквенные значения слова вместе с этим словом
>>> def translate_text(text): ... return text.upper() ... >>> def process_all(): ... text = input('Введи текст: ') ... for word in text.split(): ... old_word = word ... new_word = translate_text(word) ... print('старое слово: <{}>' ... ' новое слово: <{}>'.format(old_word, new_word)) ... >>> process_all() Введи текст: Просто какой-то текст. старое слово: <Просто> новое слово: <ПРОСТО> старое слово: <какой-то> новое слово: <КАКОЙ-ТО> старое слово: <текст.> новое слово: <ТЕКСТ.> >>>
Отредактировано py.user.next (Июнь 30, 2021 16:07:54)
Офлайн
-
Отредактировано Oleg1975Spb (Июнь 30, 2021 18:57:26)
Офлайн
py.user.nextСпасибо, мне Ваш совет очень помог!
Офлайн