2017-01-18 2 views
0

Мне нужна помощь с функцией, которая не может решить, как включить диапазон чисел. Это моя функция, и я не знаю, почему это неправильно работает с числами в диапазоне.проблема с диапазоном чисел 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 

ответ

1

range не включает последнее значение. Например, range(0,3) будет производить только 0,1 и 2, но не 3.

Кроме того, вы должны проверить, является ли ваш len(word) находится в диапазоне, и нет, если он равен диапазону, для len(word) является строка и диапазон ... поэтому он всегда будет производить False.

Ваш код должен выглядеть следующим образом:

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 

, если вы хотите использовать диапазон.

1

Вы должны использовать in оператор, вот ваша вина:

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

Что вы делаете с этим кодом не проверяет, если число находится в пределах определенного диапазона , вы» проверяя, соответствует ли ваш номер диапазону чисел между двумя предложенными вами. Диапазон не для использования, которое вы описываете, это для того, чтобы генерировать диапазоны для повторения. Вместо этого используйте if number >= 3 and number >= 6: print ("Within range")

Вы не хотели бы использовать «в», поскольку это проверяет каждый номер в наборе, если она равна той, что вы дали его, это очень неэффективно и работает в (O) N время.

Смежные вопросы