几天来一直坐在这个小问题上,我不知道是我错了还是错过了什么。
目标:从句子中的每个单词 - 找到第一个元音,从单词中删除该元音之后的字母,并将剩余的字母乘以 3。
示例:如果我有以下句子:“Hello World”,所需的输出应该是“HeHeHe WoWoWo”。
我的代码:
def bebis(inrad):
utrad = ""
inrad = inrad.split()
for tkn in inrad:
for tkn1 in tkn: #Eftersom tkn ar ordlista nu.
if tkn1 in vokaler:
count = len(tkn1)
utrad += tkn1
elif tkn1 in konsonanter:
utrad += tkn1
return utrad[:count+1]*3
print("Bebisspraket:",bebis(inrad))
我的想法:我使用 split() 将句子拆分为单词列表。然后我使用两个 for 循环,一个应该遍历每个单词,另一个应该遍历每个单词中的每个字母。如果它找到一个元音,计算它在哪里,然后将字母返回到单词的第一个元音。
我的问题: 输出只给我一个句子中的第一个单词,然后从那里中断。所以“Hello World”产生“HeHeHe”让我非常沮丧。为什么它不贯穿句子的其余部分?
最佳答案
这样的事情怎么样:
import re
def bebis_word(word):
first_vowel = re.search("[aeiou]", word, re.IGNORECASE)
if first_vowel:
return word[0:first_vowel.start() + 1] * 3
else:
return ''
def bebis(sentence):
words = [bebis_word(word) for word in sentence.split()]
return " ".join(words)
print bebis("Hello World")
输出:
HeHeHe WoWoWo
关于Python 字符串和列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12544302/