@King_Of_Demons
Junior C# Developer

Как поменять только букву по середине по индексу в python?

Дается строка символов.Строка символов должна быть разделена на фрагменты их трех последовательных символов. В каждом фрагменте средний символ заменяется случайным символом,котрый не соответсвует ни одному символов в этом фрагменте.
1.Строку я разделил на фрагменты по три символа последовательны
Меняются рандомно буквы ,но мне сказали что надо строку поменять в список,разделить и поменять букву по индексу.Весь интернет перерыл,нечего не нашел толкового,помогите кто может:
Вот код:

import random
import string

word = 'abcdefghijlkmnorpq'
for x in range(0, len(word), 3):
    new_word = word[x:x + 3]
    lent = len(new_word)
    ss = list(new_word)
    k = random.sample(range(0, lent), 1)
    for index in k:
        if index == 1:
            ss[index] = random.choice(string.ascii_lowercase)
            print(ss)
  • Вопрос задан
  • 435 просмотров
Решения вопроса 2
adugin
@adugin Куратор тега Python
from random import choice
from string import ascii_lowercase as abc
from textwrap import wrap

text = 'abcdefghijlkmnorpq'

diff = set(abc).difference
for a, b, c in wrap(text, 3):
    b = choice(tuple(diff(a, b, c)))
    print(a, b, c, sep='')
Ответ написан
Комментировать
longclaps
@longclaps
Весь интернет перерыл, нечего не нашел толкового

Аж жалость пробрала )
from random import choice
from string import ascii_lowercase

word = 'abc' * 4  # В условии не сказано, что длина строки кратно трём,
                  # но и не сказано, что делать с обрезком длины 2 - 
                  # заменять в нём или нет? Поэтому забьём.
for a, c in zip(word[::3], word[2::3]):
    b = a
    while not (a != b != c):
        b = choice(ascii_lowercase)
    print(a, b, c, sep='')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tsarevfs
@tsarevfs
C++ developer
Смотриете код из первых 2 ответов
https://stackoverflow.com/questions/6952363/replac...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы