2015-08-13 65 views
0
def anti_vowel(text): 
    p='' 
    for c in text: 
     if c=='a' or c=='A': 
      break 
     elif c=='e' or c=='E': 
      break 
     elif c=='i' or c=='I': 
      break 
     elif c=='o' or c=='O': 
      break 

     elif c=='u' or c=='U': 
      break 
     else: 
      p=p+c 



print(anti_vowel('Hello you')) 
+0

DEF anti_vowel(文本): p值= '' 對於C在文本: 如果c == '一' 或c == 'A': 破 elif c =='e'or c =='E': break elif c =='i'or c =='I': break elif c =='o'or c =='O ': 突破 ELIFç==' U」或c == 'U': 突破 其他: p = + C 打印(anti_vowel( '你好,你')) – ALpha

+1

你是不是返回任何東西,函數需要返回,可能'p' –

+1

我有一種感覺,你想使用'continue'而不是'break' –

回答

3

你在你的函數結束時忘了回報p

def anti_vowel(text): 
    p='' 
    for c in text: 
     if c=='a' or c=='A': 
      break 
     elif c=='e' or c=='E': 
      break 
     elif c=='i' or c=='I': 
      break 
     elif c=='o' or c=='O': 
      break 
     elif c=='u' or c=='U': 
      break 
     else: 
      p=p+c 
    return p 

沒有最後一行所有你永遠打印爲None,該沒有明確的return語句的函數的默認返回值。

當然,您的功能只會打印第一個輔音,因爲break結束一旦找到任何元音循環。它永遠不會扭轉字符串。對於您的示例輸入,函數返回'H',因爲輸入中的下一個字母是元音,然後break結束循環。

你可以很容易地重新寫你的函數中使用str.lower()和遏制測試:

def anti_vowel(text): 
    p = '' 
    for c in text: 
     if c.lower() in 'aeiou': 
      break 
     p += c 
    return p 

這做同樣的事,返回第一個輔音('H'爲您的樣品輸入)。

如果你想反向字母,排除元音,不使用break和反轉放在什麼地方,其餘的字母。你可以使用continue代替,或者更簡單地說,只是反轉if測試階段,只處理chararter如果不是元音:

def anti_vowel(text): 
    p = '' 
    for c in text: 
     if c.lower() not in 'aeiou': 
      p = c + p 
    return p 

現在輔音放在以前任何一項輔音,扭轉了文本:

>>> def anti_vowel(text): 
...  p = '' 
...  for c in text: 
...   if c.lower() not in 'aeiou': 
...    p = c + p 
...  return p 
... 
>>> anti_vowel('Hello you') 
'y llH' 
相關問題