2 回答

TA贡献2012条经验 获得超12个赞
更有效的方法是将排名从 2 迭代到 14 并简单地使用计数器来跟踪到目前为止该排名连续出现在卡片中的次数,如果连续排名不存在,则重置计数器. 如果计数器达到 5,则确定存在顺子。为了说明 Ace(假设它的点数在此处为 14)可以被视为 1 以与 2、3、4 和 5 形成顺子这一事实,您可以在 2 到 14 的范围内添加 14 以进行迭代:
count = 0
for rank in (14, *range(2, 15)):
if rank in vset:
count += 1
if count == 5:
print('Straight found')
break
else:
count = 0
else:
print('Straight not found')

TA贡献1803条经验 获得超6个赞
我不知道代码现在如何工作,因为您还没有向我们展示numpair(),detset()和的代码quads()。
但是,从头开始工作,这就是我的做法:
# assume rank values are numeric 2-10, J=11, Q=12, K=13, A=14
# iterate over each rank 2 thru 10
for rank in range(2, 11):
# if rank+0, rank+1, rank+2, rank+3, and rank+4 are all present, we have a straight
if all(rank+n in vset for n in range(0,5)):
print 'we have a straight'
break
# if we never broke out of the loop, we never found a straight
else:
print 'we do not have a straight'
添加回答
举报