2017-01-18 1 views
0

J'ai besoin d'aide pour une fonction qui ne peut pas décider comment inclure une plage de nombres. Ceci est ma fonction et je ne sais pas pourquoi ne fonctionne pas correctement avec les nombres dans une gamme.problème avec une gamme de nombres python

def word_score(word): 
    """ (str) -> int 
Return the point value the word earns. 

Word length: < 3: 0 points 
      3-6: 1 point per character for all characters in word 
      7-9: 2 points per character for all characters in word 
      10+: 3 points per character for all characters in word 

>>> word_score('DRUDGERY') 
16 
""" 
if len(word) < 3: 
    return 0 
elif len(word) == range(3, 6) : 
    return len(word) 
elif len(word) == range(7, 9): 
    return len(word)* 2 
elif len(word) >= 10: 
    return len(word) * 3 



return word_score 

Répondre

1

range n'inclut pas la dernière valeur. Par exemple, range(0,3) produira seulement 0,1 et 2, mais pas 3.

Aussi, vous devriez vérifier si votre len(word) est à portée et pas si elle est égale à la plage, pour len(word) est une chaîne et la gamme est ... plage donc il va toujours produire False.

Votre code devrait ressembler à:

if len(word) < 3: 
    return 0 
elif len(word) in range(3, 7) : 
    return len(word) 
elif len(word) in range(7, 10): 
    return len(word)* 2 
elif len(word) >= 10: 
    return len(word) * 3 

si vous souhaitez utiliser plage.

1

Vous devez utiliser in opérateur, voici votre faute:

num = 4 
num == range(3, 6) # false 
# it will be true if num = [3, 4, 5] 
num in range(3, 6) # true 
# it means num is 3 or 4 or 5 
1

ce que vous faites avec ce code ne vérifie pas si le nombre est dans une certaine gamme , vous re vérifier si votre nombre est égal à une gamme de nombres entre les deux que vous avez offert. La plage n'est pas pour l'usage que vous décrivez, mais pour générer des plages à parcourir. Au lieu de cela, utilisez if number >= 3 and number >= 6: print ("Within range")

Vous ne voudriez pas utiliser « dans » car cela vérifie chaque numéro unique dans le jeu si elle est égale à celle que vous avez donné, ce qui est très inefficace et fonctionne en (O) n temps.