我当时正在制作一个扑克模拟器,并试图定义一个函数,该函数可以识别一条直线并将其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)
我不知道是什么问题,但它一直返回此错误消息:
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
进行排序,从而在函数中进行了更改-这可能不是您想要的。
类似于代码,检查手是否笔直的可能函数是:
def is_straight(playerHand):
playerHand.sort()
for i in range(len(playerHand) - 1):
if playerHand[i] != playerHand [i+1] - 1:
return False
return True
如果
True
是直的,则此函数返回playerHand
,否则返回False
。