我制作了一个扑克模拟器,并试图定义一个函数来识别一个直线并给它一个handstrength
值5。你知道吗
def straightCheck(playerHand):
playerHand.sort()
print(playerHand)
for playerHand in range(len(playerHand)):
for i in playerHand:
if playerHand[i] == playerHand [i+1] -1:
straight = True
else:
straight = False
if straight == True:
handstrength = 5
x = [1,3,5,4,2]
straightCheck(x)
我不知道is有什么问题,但它不断返回以下错误消息:
for i in playerHand:
TypeError: 'int' object is not iterable
首先,您尝试迭代一个整数,这不能(也不应该)完成。似乎您的两个嵌套的
for
循环应该是一个for
,就像for i in range(len(playerHand) - 1)
,当使用-1
时,这样您就不会试图访问playerHand[len(playerHand)]
。你知道吗另外,由于在每次迭代中都将
straight
设置为True
或False
,因此只有最后一次迭代才算,因此会出现误报。你知道吗最后,我不确定是否要函数
return
一个值,但当前函数returns
没有数据(除非handstrength
是全局变量)。另外,请注意,当前使用.sort()
实际上是在对playerHand
进行排序,从而在函数中更改它—这可能不是您想要的。你知道吗与您的代码类似,检查手是否笔直的可能功能如下:
如果
playerHand
是直的,则此函数返回True
,否则返回False
。你知道吗这个怎么样。您可以对列表进行排序,然后将其转换为一个集合,然后再转换回一个列表,从而使其具有唯一性。那么长度必须是5,如果是这样,5个连续数字的最大值和最小值之间的差必须是4。我不能用数学证明这一点,但它应该是。;)
也可以在这里看到:Check for consecutive numbers
相关问题 更多 >
编程相关推荐