+ 2

Please help me with a better way of implementing this code. If doesn't pass some test like... Empty string test

def isogram (word): if type (word) != str: raise TypeError ("argument is not a string") elif len(list(word)) == 0: return (word, False) else : word = word .lower() for char in word: if word.count(char) > 1: return (word , False ) else : return (word,True) print (isogram ("design")

10th Jun 2017, 10:54 PM
Obumneme Anichebe
Obumneme Anichebe - avatar
4 Réponses
+ 8
def isogram (word): if type (word) != str: raise TypeError ("argument is not a string") elif len(list(word)) == 0: return (word, False) else : word = word .lower() for char in word: if word.count(char) > 1: return (word , False ) # don't return True before end of loop (while all chars tested) #else : #return (word,True) # implicite: if not already False returned, return True (all chars are unique) return (word,True) print (isogram ("design")) # don't forgot to close all parenthesis (rounded brackets) # another way of implementing isogram test, is to use set properties (uniques items list), and test if length of set is equal to length of list (so it proove that each char is unique): def isogram_bis(word): if type (word) != str: raise TypeError ("argument is not a string") # implicite else: count_char = len(word) # not necessary to transform string to list if count_char != 0 and count_char == len(set(word)): return (word,True) # implicite else: return (word,False) print (isogram_bis("design"))
10th Jun 2017, 11:26 PM
visph
visph - avatar
+ 1
No... Just to define a function that checks if a word is an isogram
10th Jun 2017, 11:17 PM
Obumneme Anichebe
Obumneme Anichebe - avatar
0
Thanks a lot...
10th Jun 2017, 11:33 PM
Obumneme Anichebe
Obumneme Anichebe - avatar