замена букв в слове
на номер буквы +1
import random
# Алфавиты
CYRILLIC_LOWER = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя'
def shift_cyrillic_letter(letter: str) -> str:
"""Возвращает следующую букву в кириллическом алфавите."""
if letter in CYRILLIC_LOWER:
idx = CYRILLIC_LOWER.find(letter)
return CYRILLIC_LOWER[(idx + 1) % len(CYRILLIC_LOWER)]
elif letter in CYRILLIC_UPPER:
idx = CYRILLIC_UPPER.find(letter)
return CYRILLIC_UPPER[(idx + 1) % len(CYRILLIC_UPPER)]
else:
return letter
def replace_one_random_letter(word: str) -> str:
"""Заменяет одну случайную букву в слове."""
if not word:
return word
indices = [i for i, ch in enumerate(word) if ch.isalpha()]
if not indices:
return word
idx = random.choice(indices)
return word[:idx] + shift_cyrillic_letter(word[idx]) + word[idx+1:]
def replace_multiple(word: str, n: int = 30) -> list:
"""Возвращает список слов после n случайных замен."""
result = [word]
current = word
for _ in range(n):
current = replace_one_random_letter(current)
result.append(current)
return result
# Пример использования
if __name__ == "__main__":
original_word = "проверка"
transformed = replace_multiple(original_word, 30)
print(f"Оригинал: {original_word}")
print("Список слов после каждой замены:")
for i, w in enumerate(transformed):
print(f"{i:02d}: {w}")
Оригинал: проверка новая
Список слов после каждой замены:
00: проверка новая
01: прогерка новая
02: прогерка новаа
03: ррогерка новаа
04: ррогёрка новаа
05: ррогёска новаа
06: ррогёска ногаа
07: ррогёска ногаб
08: ррогёскб ногаб
09: ррогёткб ногаб
10: ррогёткб ногбб
11: ррогёткб нпгбб
12: ррогётлб нпгбб
13: ррогёулб нпгбб
14: ррогёулб нргбб
15: ррогёулб нргвб
16: ррогёулб нргвв
17: ррогёулб нрггв
18: ррогёумб нрггв
19: ррогжумб нрггв
20: ррогжумб нсггв
21: ррогжумб нтггв
22: ррогзумб нтггв
23: ррпгзумб нтггв
24: ррпгзумб нуггв
25: српгзумб нуггв
26: српгзумб нуггг
27: срргзумб нуггг
28: срргзунб нуггг
29: срргзунб нугдг
30: срргзунб нуддг
Свидетельство о публикации №126030402056