我如何在函数内的循环中返回值?

问题描述 投票:-1回答:2

我几乎已经弄清楚了,但是有一件事。基本上,我想返回字符串without a vowel(我猜这是一个常见的挑战)。这与我在CodeWars上所做的其他挑战类似,因此仍未完成。我在函数内有一个for循环。我调用该函数以返回值。

出于某种原因,我返回的是空值,或者说是“无”,但是通过打印我得到了想要的结果。在同一行和缩进。

这是针对Codewar的挑战,因此我需要返回值而不是,打印,记录(我知道)。我问了一个朋友,研究了几个小时,但没有任何帮助。

def disemvowel(string):
    #aeiou
    vowel = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
    aList = list(string) #'' to [...]

    for x in aList:
      for y in vowel:
        if x == y: 
          #print(x)
          aList.remove(x)
    print(''.join(aList)) # "Ths wbst s fr lsrs LL!"
    return(''.join(aList)) # Nothing shows up here...


我希望通过返回返回"Ths wbst s fr lsrs LL!"的输出,但得到None

https://www.codewars.com/kata/52fba66badcd10859f00097e/train/python来源^

python function for-loop return
2个回答
0
投票

要从字符串中删除元音,最快的方法是使用str.replace

def remove_vowels(msg):
    vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U']
    for vowel in vowels:
        msg = msg.replace(vowel, '')
    return msg

0
投票

使用列表理解:

def remove_vowels(msg):
    vowels = {'a', 'e', 'i', 'o', 'u'}
    return ''.join(c for c in msg if c.lower() not in vowels)

推荐问答