這裏是你能達到你想要的元音(什麼人的方式,雖然這是一個有點錯綜複雜 - 別人會有更好的辦法)。它所做的是首先從你的單詞(w
)創建一個列表,其原因是列表是可變的,因此可以在我們的迭代過程中進行修改。 vowels
列表保存了所有元音的索引位置。該cutoff
是怪異的一部分 - 我們將用自身的反向zip
的vowel
名單,這將是這個樣子:
In [28]: zip(vowels, vowels[::-1])
Out[28]: [(1, 7), (3, 6), (6, 3), (7, 1)]
因此,我們有什麼,我們希望切換索引位置,但作爲你可以在中間元組後面看到,我們只是將這些字母交換回來。因此,我們必須指出,我們不想使用整個zip
單元列表,所以我們在中間切斷它(因爲奇數個元音將意味着中間元音將自身替換)。從那裏,你就像以前一樣做 - 交換信件,但這次你正在處理一個可變列表。最後,將所有東西一起加入到一個字符串中。
In [29]: word = 'saturday'
In [30]: vowels = [index for index, c in enumerate(word) if c in 'aeiouy']
In [31]: w = [c for c in word]
In [32]: cutoff = int(round(len(vowels)/2.0))
In [33]: for i1, i2 in zip(vowels, vowels[::-1])[:cutoff]:
....: w[i1], w[i2] = w[i2], w[i1]
....:
....:
In [34]: ''.join(w)
Out[34]: 'sytardua'
請張貼樣本輸入和期望輸出。您的描述不明確 – inspectorG4dget
Python中的字符串類型是不可變的,您應該爲您的結果創建新的一個字符串,您不能更改已經創建的字符串對象。 – Denis