在这个小问题上坐了几天了,我不知道是我把它全搞错了,还是错过了什么。在
目标:从一个句子中的每个单词中找出第一个元音,去掉该元音后的字母,然后将剩下的字母乘以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循环,一个遍历每个单词,另一个遍历每个单词中的每个字母。如果找到一个元音,数一数它所在的位置,然后将字母返回到单词的第一个元音。在
我的问题:输出只给我一个句子中的第一个单词,并从那里中断。所以“你好世界”让我非常沮丧。为什么它没有贯穿整个句子?在
作为正则表达式方法的一种替代方法,我做到了:
思考:
(O(1))
bebis
中对find_vowel_index
的多次调用,它的结构可能更好。在这样的怎么样:
输出:
你的方法似乎是正确的(把句子分成几个单词,然后在单词上重复找到第一个元音)。在
问题是您的
tkn1
变量是一个字母,所以len(tkn1)
总是1,so count=1
这里有一个潜在的解决方案:
这里,我们使用
enumerate
函数,它将给出一个元组(index,letter)
的列表。一旦我们测试了当前字母是元音,我们取单词的第一个字母(tkn[:i+1]
),重复三次,将它们存储在utrad
中,然后移动到下一个单词(使用离开当前循环的break
语句)。 我们只需要在单词之间增加一个空格。在相关问题 更多 >
编程相关推荐