python - 检查数组中是否有 5 个连续数字

标签 python arrays python-3.x

我正在制作一个扑克模拟器,并尝试定义一个函数来识别顺子并为其指定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 设置为 TrueFalse,因此只有最后一次迭代才会计算在内,因此您将得到误报。

最后,我不确定您是否希望您的函数返回一个值,但目前您的函数返回没有数据(除非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/

相关文章:

python-3.x - 在视频中显示帧的裁剪部分:函数 cv::imshow 中的错误 (-215) size.width>0 && size.height>0

python - 如何解析日期进行比较 时间范围比较特定值

python - 如何获取一个 Mock 对象的多个实例

php - 如何在php中插入多维数组?

python - Keras:导入错误:没有名为 data_utils 的模块

python - 在python中填充两条曲线之间的区域

python - 为什么 torch.gt 函数将 requires_grad 变成 False?

python - 使用百分位数删除 Pandas DataFrame 中的异常值

javascript - 将嵌套的 PHP 循环传递给 javascript

C - 如何将这个非常大/动态数组的代码调整为二维数组?