2017-01-26 39 views
0

我寫了一個程序來檢查,如果字是等值線,但經過測試案例後,它說:「您的解決方案未能通過所有測試」檢查,如果一個字是等值線

下面

是測試用例:

from unittest import TestCase 

class IsogramTestCases(TestCase): 
    def test_checks_for_isograms(self): 
    word = 'abolishment' 
    self.assertEqual(
     is_isogram(word), 
     (word, True), 
     msg="Isogram word, '{}' not detected correctly".format(word) 
    ) 

    def test_returns_false_for_nonisograms(self): 
    word = 'alphabet' 
    self.assertEqual(
     is_isogram(word), 
     (word, False), 
     msg="Non isogram word, '{}' falsely detected".format(word) 
    ) 

    def test_it_only_accepts_strings(self): 
    with self.assertRaises(TypeError) as context: 
     is_isogram(2) 
     self.assertEqual(
     'Argument should be a string', 
     context.exception.message, 
     'String inputs allowed only' 
    ) 

以下也是我的測試代碼。它通過了測試,但未能一些隱藏測試:

def is_isogram(word): 
if type(word) == str or len(word) != 0: 
    if not word: 
     return (word, False) 
    word = word.lower() 
    return (word, len(set(word)) == len(word)) 
else: 
    raise TypeError('Argument should be a string') 

有誰能夠告訴我什麼,我做錯了什麼?

+0

什麼語言呢? –

+1

它是Python語言 – Iakhator

+0

找到我的答案[這裏](http://stackoverflow.com/questions/37924869/check-python-function-determine-isogram-from-codewars/43181468#43181468)如果這有幫助0123投票如果有幫助 –

回答

0

由於這個問題涉及到的東西我一直在努力,我想和大家分享我的發現,使任何人誰正在尋找這個問題的澄清溶液使用它。

def is_isogram(word): 

    word = word.lower() 

    try: 

     if len(word) > 0: 

      for letter in word: 

       if word.count(letter) > 1: 

        return (word, False) 

      return (word, True) 

     else: 
      return ('argument', False) 

    except TypeError as e: 

    return "Argument should be a string: "+ str(e) 

print is_isogram("") 
0

好吧,這個作品,也通過了所有隱藏的測試。歡迎您

def is_isogram(word): 
    '''This function tests for isogram''' 
    word_set = set(word) 

    if word.strip() == "": 
     return (word, False) 

    elif len(word) == len(word_set): 
     return (word, True) 

    elif type(word)!= str : 
     raise TypeError 

    else: 
     return (word, False) 
+0

OP正在進行測試;爲他回答失敗的目的。幫助是告訴他如何出錯,而不是提出新問題。 – zondo

0
def is_isogram(word): 
    return (word,True) if word and len(set(word)) == len(word) else (word,False) 
+2

您的縮進被打破。請考慮添加一個解釋,以便將來的用戶可以更好地理解這一點。 –

相關問題