重新排列字符,使所有辅音出现在元音之前

时间:2018-09-24 15:34:00

标签: python string

编写一个python函数,以便

单词在奇数位置:将其反转

单词在偶数位置:重新排列字符,以便所有辅音     出现在元音之前,其顺序不应更改

输入:太阳从东方升起     输出:eht snu sesir ni eht stea

我已经颠倒了字符串,但是无法对字符进行重新排列。     我们可以使用附加和联接功能还是需要最后交换。     基本上已经完成了字符串的旋转,所以我们如何才能做到这一点。

def encrypt_sentence(sentence):
    vowel_set = set("aeiouAEIOU")
    final_list=[]
    word=sentence.split()
    for i in range(0,len(word)):
        if((i%2)==0):
            final_list.append(word[i][::-1])
        else:
           final_list.append("".join(c for c in word if c not in vowel_set))
 print(final_list)                   
encrypt_sentence("the sun rises in the east")   

3 个答案:

答案 0 :(得分:1)

我会遍历字母以跟踪元音和辅音,然后在末尾使用join。

def encrypt_sentence(sentence):
    vowel_set = set("aeiouAEIOU")
    final_list=[]
    word=sentence.split()
    for i in range(0,len(word)):
        if((i%2)==0):
            final_list.append(word[i][::-1])
        else:  # do rearrangement
            vowels = list()
            consonants = list()
            for letter in word[i]:
                if letter in vowel_set:
                    vowels.append(letter)
                else:
                    consonants.append(letter)
            new_string = "".join(consonants) + "".join(vowels)
            final_list.append(new_string)
    return final_list

答案 1 :(得分:1)

尝试使用两个列表理解:

word='testing'
vov=[x if x in vowel_set else '' for x in word]
cons=[x if x not in vowel_set else '' for x in word]
('').join(cons+vov)

答案 2 :(得分:0)

person