Как вернуть значение в цикле внутри функции? - PullRequest
2 голосов
/ 25 сентября 2019

Я почти понял это, но есть одна вещь.По сути, я хочу вернуть строку without a vowel (это общий вызов, я думаю).Это похоже на другие проблемы в CodeWars, которые я сделал, но все еще не завершен из-за этого.У меня есть цикл внутри функции.Я вызываю функцию для возврата значения.

По какой-то причине я возвращаю пустое или, скорее, «None», но при печати я получаю желаемый результат.На той же строке и отступ.

Это для вызова 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 Источник ^

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Использовать понимание списка:

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

Примеры:

>>> remove_vowels("Lorem ipsum dolor sit amet.")
'Lrm psm dlr st mt.'
>> remove_vowels("This is it")
'Ths s t'
>>> remove_vowels("This website is for losers LOL!")
'Ths wbst s fr lsrs LL!'
0 голосов
/ 25 сентября 2019

Чтобы удалить гласные из строк, самый быстрый способ будет использовать 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
...