我正在輔導一個朋友在python中,而不是自己很擅長。這項任務是編寫一個腳本,用於反轉一些外來語言,在添加字母「p」後重復每個元音序列。一些例子:優化初學python腳本關於子串替換
tomato -> topomapatopo
groovy->groopoovy
和beautiful -> beaupeautipifupul
的目標,是扭轉這一點。來自groopoovy -> groovy
。
由於這是一個荷蘭的任務,有一個例外:「ij」被視爲一個元音。所以blijpij -> blij
(我發現很多事情很複雜)
我的解決方案對我來說似乎相當笨重,我對更好,更優雅的解決方案感興趣。由於這是編程的入門課程,不幸的是,基礎知識是關鍵。
word = input()
vowels = ('a', 'e', 'i', 'o', 'u')
position = 0
solution = ""
while position < len(word):
if word[position] == 'p': # obviously, search for the letter 'p'
add = 1 # keep track of the sub string size
group = ""
while True: # loop to get consecutive vowels
if word[position + add] in vowels:
group += word[position + add]
if word[position + add] == 'i' and word[position + add + 1] == 'j': # recognize the "ij"
group += 'j'
add += 1
add += 1
else:
break
if position+add == len(word): # stay within the bounds of the string
break
add -= 1
if word[position - add:position].lower() == group.lower() and group != "":
position += add
else:
solution += 'p'
else:
solution += word[position]
position += 1
print(solution)
這確實是我尋找的更優雅的解決方案。謝謝保羅。當'c =='p''時,它需要一個小小的調整來檢查左側和右側的部分,否則,'海角'這樣的字會被破壞。 –
該程序假定輸入單詞根據您的配方格式化,並且不檢查它的語法或拼寫錯誤。你的版本也不檢查。 「斗篷」不是有效的輸入。 「capapepe」*是*有效並正確給出結果「斗篷」。 –