删除函数中的元音会给我空输出

时间:2016-09-27 20:40:47

标签: python

我在Python中编写了这个函数,它将字符串作为输入,输出相同的字符串,所有字符都是小写的,删除了元音。它没有按预期工作,为什么会这样?

def removingVowels(string):
    string.lower()
    vowels = ['a','e','i','o','u']
    for char in string:
        if char in vowels:
            del string[char]
    return string
    print (removingVowels("HadEEl"))

1 个答案:

答案 0 :(得分:0)

字符串在Python中是不可变的,因此您无法从中删除字符。您需要创建一个新字符串。

你会做这样的事情:

>>> def removingVowels(string):
...    string=string.lower()
...    return ''.join([c for c in string if c not in 'aeiou'])
... 
>>> removingVowels("HadEEl")
'hdl'

工作原理:

  1. string=string.lower()您需要将string.lower()的结果分配回字符串。 Python中的常见错误是不要这样做。
  2. 然后我们有一个list comprehension,它按字符对字符串进行交互。 list comprehension构建每个字符的列表,除非它是字符串'aeiou'
  3. 的成员
  4. 列表需要逐个字符连接以形成新字符串。然后重新调整。