Изменение порядка тройки символов в Python - PullRequest
0 голосов
/ 01 декабря 2018

Я уже несколько дней пытаюсь решить эту домашнюю задачу, но никак не могу ее решить.Я начал учебу в середине первого семестра, поэтому пока не могу спросить учителя и надеюсь, что вы, ребята, сможете мне помочь.Это не для оценок, я просто хочу знать, как.

Мне нужно написать программу, которая читает строку и преобразует триплеты abc в bca . Per group of three you need to do this. For example katzon becomes atkonz`.

Самое близкое, что я получил, это:

string=(input("Give a string: "))

for i in range(0, len(string)-2):
    a = string[i]
    b = string[i + 1]
    c = string[i + 2]
    new_string= b, c, a
    i+=3
    print(new_string)

Вывод:

('a', 't', 'k')
('t', 'z', 'a')
('z', 'o', 't')
('o', 'n', 'z')

1 Ответ

0 голосов
/ 01 декабря 2018

Приведенный ниже код преобразует, например, " abc " в " bca ".Это работает для любой строки, содержащей тройки.Теперь, если ввод « abc d», он преобразуется в « bca d».Если вы введете « katzon », он преобразуется в « atkonz ».Это то, что я понял из вашего вопроса.

stringX = input()

# create list of words in the string
listX = stringX.split(" ")
listY = []

# create list of triplets and non-triplets
for word in listX:
    listY += [[word[i:i+3] for i in range(0, len(word), 3)]]

# convert triplets, for example: "abc" -> "bca"
for listZ in listY:
    for item in listZ:
        if len(item)==3:
            listZ[listZ.index(item)] = listZ[listZ.index(item)][1:] + listZ[listZ.index(item)][0]
    listY[listY.index(listZ)] = "".join(listZ)

# create final string
stringY = " ".join(listY)
print(stringY)
...