Python如何将每个字母放入一个单词?

时间:2017-10-06 14:06:00

标签: python

当给出姓名时,例如Aberdeen Scotland

我需要获得Adbnearldteoecns的结果。

将第一个单词保留为plain,但将最后一个单词反转并放入第一个单词之间。

到目前为止我已经完成了:

coordinatesf = "Aberdeen Scotland"

for line in coordinatesf:
    separate =  line.split()
    for i in separate [0:-1]:
        lastw = separate[1][::-1]
        print(i)

3 个答案:

答案 0 :(得分:0)

有点脏但是有效:

coordinatesf = "Aberdeen Scotland"
new_word=[]
#split the two words

words = coordinatesf.split(" ")

#reverse the second and put to lowercase

words[1]=words[1][::-1].lower()

#populate the new string

for index in range(0,len(words[0])):
    new_word.insert(2*index,words[0][index])
for index in range(0,len(words[1])):
    new_word.insert(2*index+1,words[1][index])
outstring = ''.join(new_word)
print outstring

答案 1 :(得分:0)

请注意,如果输入字符串由两个长度相同的单词组成,那么您只想定义好。 我使用断言来确保它是正确的,但你可以将它们排除在外。

def scramble(s):
    words = s.split(" ")
    assert len(words) == 2
    assert len(words[0]) == len(words[1])
    scrambledLetters = zip(words[0], reversed(words[1]))
    return "".join(x[0] + x[1] for x in scrambledLetters)

>>> print(scramble("Aberdeen Scotland"))
>>> AdbnearldteoecnS

您可以用sum()替换x [0] + x [1]部分,但我认为这会降低其可读性。

答案 2 :(得分:0)

这会分割输入,用反转的第二个词拉开第一个单词,加入对,然后加入对列表。

coordinatesf = "Aberdeen Scotland"  
a,b = coordinatesf.split()
print(''.join(map(''.join, zip(a,b[::-1]))))