2016-09-27 45 views
-4

我在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

變化'string.lower()''到字符串= string.lower()' –

+1

字符串是不變的,所以'德爾串[字符]'將無法工作 – dawg

回答

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,該字符串逐個字符地交織在一起。列表理解構建每個字符的列表,除非它是字符串的成員'aeiou'
  3. 該列表需要逐個字符地連接以形成新的字符串。然後重新調整。
+0

謝謝你的工作,但你能解釋一下你做回報聲明? – Hadeel36