2017-10-22 51 views
0

我有兩個函數,第一個函數與第二個函數有關,它編碼一個字母是一個元音(True)還是一個輔音(False)。如何獲得輔音重複,但不是Python中的元音

def vowel(c): 
    """(str) -> bool 
    Return whether the string c is a vowel. 
    >>> vowel('e') 
    True 
    >>> vowel('t') 
    False 
    """ 
    for char in c: 
     if char.lower() in 'aeiou': 
      return True 
     else: 
      return False 


def repeated(s, k): 
    """(str) -> str 
    Return a string where consonants in the string s is repeated k times. 
    >>> repeated('', 24) 
    '' 
    >>> repeated('eoa', 2) 
    'eoa' 
    >>> repeated('m', 5) 
    'mmmmm' 
    >>> repeated('choice', 4) 
    'cccchhhhoicccce' 
    """ 
    result = '' 

    for c in s: 
     if c is not vowel(c): 
      result = result + (c * k) 
    return result 

這是我的功能,但例子失敗,不會跳過元音。

repeat('eoa', 2) 
Expected: 
    'eoa' 
Got: 
    'eeooaa' 

在此先感謝!

+0

繼續前進!編程可以很有趣。做你的運動。 – Kanak

+0

當你明白它的樂趣 - 謝謝! – Athena

+0

不客氣。不要忘記告訴社區你是否滿意某個給定的答案,並將其標爲正確答案。請參閱* [我應該怎麼做當有人回答我的問題?](https://stackoverflow.com/help/someone-answers)* – Kanak

回答

1

兩件事。在vowel函數中,不需要循環。你發送一個字符,所以你只需要檢查:

def vowel(c): 
    if c.lower() in 'aeiou': 
     return True 
    else: 
     return False 

或者:

def vowel(c): 
    return True if c.lower() in 'aeiou' else False 

然後,在repeated,不要使用c is not vowel(c)。這比較了c這個字符的身份是否等於True/False。只要使用從vowel返回的值直接和有條件地添加到result

def repeated(s, k): 
    result = '' 
    for c in s: 
     if not vowel(c): 
      result += (c * k) 
     else: 
      result += c 
    return result 
+1

感謝您的解釋,它現在更有意義! – Athena