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

Заменить все цифры на букву латинского алфавита

17.02.2022, 16:00. Показов 6911. Ответов 10
Метки нет (Все метки)

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

Примечание: две цифры не могут располагаться рядом. Те если у вас есть строка «19у» это значит что у вас одна цифра 19, а не 1 и 9. Как результат вы должны получить «sy»

Sample Input:

Hel12o 16e15ple

Sample Output:

Hello people
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.02.2022, 16:00
Ответы с готовыми решениями:

Разработайте программу, запрашивающую у пользователя букву латинского алфавита
Разработайте программу, запрашивающую у пользователя букву латинского алфавита. Если введенная буква входит в следующий список (a, e, i, o...

По заданной строчной букве латинского алфавита, выведите все буквы латинского алфавита, начиная от начала до заданной
По заданной строчной букве латинского алфавита, выведите все строчные буквы латинского алфавита, начиная от начала до заданной буквы. ...

Заменить каждую букву латинского алфавита на следующую по алфавиту
Нужное заклинание было зашифровано следующим образом: в строке,нужно было в самом длинном слове заменить каждую букву латинского алфавита...

10
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
17.02.2022, 16:03
Python
1
2
3
import re
 
print(re.sub(r'\d+', lambda x: chr(int(x.group()) + 96), input()))
2
0 / 0 / 0
Регистрация: 17.02.2022
Сообщений: 2
17.02.2022, 16:08  [ТС]
Это не очень понятно, я только начинаю. Можно попроще.
Я тут накидал, но не работает, может кто-то подправит?

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Alphabet = "abcdefghijklmnopqrstuvwxyz"
for e in Alphabet:
     tt = Alphabet[e]
print(tt)                                 #не выводит tt
text = input()
s += ' '
i = 0
while i<len(text):
     a = text[i]
     if '0'<=a<='9':
         s += a
         i += 1
         if i<len(text):
             a = text[i]
         else:
             break
     i += 1
     if s<len(Alphabet+1):
         text = text.replace('s', 'tt')
print(text)
0
 Аватар для Vigi
641 / 481 / 179
Регистрация: 28.05.2012
Сообщений: 1,419
17.02.2022, 17:24
Цитата Сообщение от Alexandr0984 Посмотреть сообщение
Можно попроще.
Можно:
Python
1
2
3
4
5
6
7
8
9
10
11
word = "Hel12o 16e15ple"
w = ''
for x in word:
    if x.isdigit():
        w += x
    else:
        w += ' '
 
for r in w.split():
    word = word.replace(r, chr(int(r) + 96))
print(word)
Но с регуляркой лучше!

Добавлено через 8 минут
ну или в вашем случае:
Python
1
2
3
4
5
6
7
8
9
10
11
12
word = "Hel12o 16e15ple"
alphabet = "abcdefghijklmnopqrstuvwxyz"
w = ''
for x in word:
    if x.isdigit():
        w += x
    else:
        w += ' '
 
for r in w.split():
    word = word.replace(r, alphabet[int(r) - 1])
print(word)
1
0 / 0 / 0
Регистрация: 02.05.2022
Сообщений: 2
02.05.2022, 18:48
vigi, можете детально обьяснить что происходит в этом коде самом последнем?
Python
1
2
3
4
5
6
7
8
9
10
11
12
word = "Hel12o 16e15ple"
alphabet = "abcdefghijklmnopqrstuvwxyz"
w = ''
for x in word:
    if x.isdigit():
        w += x
    else:
        w += ' '
 
for r in w.split():
    word = word.replace(r, alphabet[int(r) - 1])
print(word)
я просто прям мега новичок, хочу понять что тут за что отвечает, но не очень понимаю
0
0 / 0 / 0
Регистрация: 26.05.2022
Сообщений: 3
27.05.2022, 02:23
Если Вы новичок, то скорее всего Вы еще не проходили методы isdigit, split, chr. Попробуйте этот вариант, здесь даже replace нет.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
text=input()
alf=('abcdefghijklmnopqrstuvwxyz')
i=0
s=""
while i<len(text):
    a=text[i]
    while '0'<=a<='9':
        s+=a
        i+=1
        if i<len(text):
            a=text[i]
        else:
            break
    if s!='':
        print(alf[int(s)-1], end='')
        s=''
        continue
    print(text[i], end='')
    i+=1
0
0 / 0 / 0
Регистрация: 01.06.2022
Сообщений: 3
01.06.2022, 16:10
добрый день! Спасибо код работает! если не сложно , можно в двух словах объяснить, как он работает? только начинаю изучать пока не все понятно!
0
0 / 0 / 0
Регистрация: 26.05.2022
Сообщений: 3
01.06.2022, 18:42
Первый цикл while перебирает все символы из введённого текста. Внутренний цикл while проверяет является ли символ цифрой, то есть входит ли он в промежуток от "0" до "9", причем сравниваются в нём не сами строчные цифры, а их индекс по таблице unicode. В поисковике наберете: "таблица символов unicode", так все понятно будет. Так вот, вложенный цикл распознав цифру дописывает её в ранее созданную пустую строчку s. Затем, когда заполнение строки s прекращается, (а прекращается оно если после подряд идущих цифр идёт не цифра) она приводится к целочисленному типу, для того чтобы внесённая в строку строчная цифра могла быть использована в качестве индекса переменной alf. Единицу вычитаем потому что индексация строки в переменной alf (впрочем как и везде) начинается с 0, а не с 1. Соответственно print(alf[int(s)-1], end='') выводит во вновь формируемой строке вместо цифры букву введённого ранее алфавита. По умолчанию функция print заканчивается \n, то есть командой перехода на новую строку, поэтому пишем end='' (это команда окончания вывода пустой строкой без пробела), чтобы в новую, предназначенную для окончательного вывода строку, буквы дописывались одна за одной без пробелов. Если внутренний цикл не определяет символ как цифру, то внешний цикл в конечную строку добавляет этот символ.
0
0 / 0 / 0
Регистрация: 01.06.2022
Сообщений: 3
01.06.2022, 18:47
Огромное спасибо!))
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
01.06.2022, 20:08
Python
1
2
3
4
5
6
7
8
9
10
from itertools import groupby
s   = input('s = ')
res = ''
for k, g in groupby( s, lambda x: x.isdigit() ):
    sub = ''.join(g)
    if k:
        res += chr( ord('a')+int(sub)-1 )
    else:
        res += sub
print(res)
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
02.06.2022, 06:15
Ну или так:

Python
1
2
3
4
5
6
7
8
9
from itertools import groupby
s   = input('s = ')
res = ''
for k, g in groupby( s, lambda x: x.isdigit() ):
    sub = ''.join(g)
    if k:
        sub = chr( ord('a')+int(sub)-1 )
    res += sub
print(res)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.06.2022, 06:15
Помогаю со студенческими работами здесь

Строки: заменить в словах цифры малыми буквами латинского алфавита
Напишите, пожалуйста, программу! Из текстового файла, состоящего из 6-7 строк сформировать массив слов. Заменить в словах цифры малыми...

Удалить из строки лишние пробелы и заменить цифры соответствующими буквами латинского алфавита
С клавиатуры вводится последовательность, содержащая от 1 до 50 слов, в каждом из которых от 1 до 10 строчных латинских букв и цифр. Между...

В заданной строке удалить все гласные буквы латинского алфавита и удвоить все цифры
1. В заданной строке удалить все гласные буквы латинского алфавита и удвоить все цифры.

Удвоить в заданной строке все гласные буквы латинского алфавита и удалить из неё все цифры
1. Удвоить в заданной строке все гласные буквы латинского алфавита и удалить из неё все цифры.

Заменить в строке все буквы латинского алфавита на знак «+»
Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Заменить все буквы латинского...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru