我正在制作一个扑克模拟器,并尝试定义一个函数来识别顺子并为其指定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
,因此只有最后一次迭代才会计算在内,因此您将得到误报。
最后,我不确定您是否希望您的函数返回
一个值,但目前您的函数返回
没有数据(除非handstrength
> 是全局变量)。另外,请注意,目前,通过使用 .sort()
您实际上是在对 playerHand
进行排序,从而在函数内更改它 - 这可能不是您想要的。
类似于您的代码,检查手是否直的可能函数是:
def is_straight(playerHand):
playerHand.sort()
for i in range(len(playerHand) - 1):
if playerHand[i] != playerHand [i+1] - 1:
return False
return True
如果 playerHand
是直的,则此函数返回 True
,否则返回 False
。
关于python - 检查数组中是否有 5 个连续数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200590/