一系列数字python的麻烦

时间:2017-01-18 23:30:45

标签: 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

3 个答案:

答案 0 :(得分: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 :(得分:1)

您使用该代码所做的事情并不是检查该号码是否在某个范围内,您是否正在检查您的号码是否等于某个范围你提供的两者之间的数字。范围不是您描述的用途,而是用于生成迭代的范围。相反,请使用if number >= 3 and number >= 6: print ("Within range")

你不想在&#34;中使用&#34;因为这会检查集合中的每个数字,如果它等于你给它的那个,这是非常低效的,并且在(O)n 时间内运行。

答案 2 :(得分:1)

range(0,3)不包含最后一个值。例如,len(word)将仅生成0,1和2,但不生成3.

另外,您应该检查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

您的代码应如下所示:

website.com/index.html
website.com/pages/example.html

如果你想使用范围。