2

为什么这不起作用?

def straight(ranks):
    "Return True if the ordered ranks form a 5-card straight."
    return range(max(ranks)-4, max(ranks)+1) == ranks.sort()

假设等级为:

>>> ranks = [9, 8, 7, 6, 5]
>>> range(max(ranks)-4, max(ranks)+1)
[5, 6, 7, 8, 9]
>>> ranks.sort()
[5, 6, 7, 8, 9]

那为什么是:

>>> range(max(s)-4,max(s)+1) == s.sort()
False
4

3 回答 3

9

s.sort()返回None,因为它对列表进行了适当的排序。使用sorted(s).

>>> s = [1,3,2]
>>> repr(s.sort())
'None'
>>> repr(s)
'[1, 2, 3]'
>>> repr(sorted(s))
'[1, 2, 3]'
于 2012-05-18T18:24:57.817 回答
2

因为ranks.sort()等于None。用于sorted(ranks)比较。

于 2012-05-18T18:32:46.860 回答
2

rank.sort() 在列表中就地排序,因此返回 None...如果要返回列表,请使用 sorted()。

于 2012-05-18T18:47:57.700 回答