我当时正在制作一个扑克模拟器,并试图定义一个函数,该函数可以识别一条直线并将其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设置为TrueFalse,所以只有最后一次迭代会计数,因此您会得到误报。

最后,我不确定您是否要让函数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

09-13 04:04