在Python中重新排列字符三胞胎

时间:2018-12-01 14:57:29

标签: python-3.x triplet

几天来我一直在努力解决这个家庭作业问题,但似乎无法解决。我是在第一学期中途开始学习的,所以我现在还不能问老师,希望你们能帮助我。不是为了成绩,我只是想知道如何。

我需要编写一个程序,该程序读取一个字符串并将三元组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 :(得分:0)

下面的代码将例如“ 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)