【问题标题】:TypeError: 'float' object cannot be interpreted as an integer 4TypeError: 'float' 对象不能被解释为整数 4
【发布时间】:2017-05-18 15:43:21
【问题描述】:

我正在尝试创建数独,但出现此错误。我认为这是因为range 行;也许我做错了,但range(int(numb/numb+3)) 也不起作用。谢谢您的帮助。

File "D:\Games\Python\sudokuV2Test2.py", line 83, in estDansSousMatrice
    for i in range(bl, bl+3):
TypeError: 'float' object cannot be interpreted as an integer"

这是代码:

def estDansSousMatrice(grille,l,c,v):
    bc=(c/3)*3
    bl=(l/3)*3

    for i in range(bl, bl+3):
        for j in range(bc,bc+3):
            if grille[i][j]==v:
                return True
    return False

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    由于您之前将bcbl 相除然后乘以3,假设我们输入c = 3l = 3,这两个结果将是3.0 而是使用for i in range(int(bl),int(bl)+3):for j in range(int(bc),int(bc)+3):

    【讨论】:

    • 非常感谢您的帮助。
    【解决方案2】:

    需要明确的是,您可以回避转换回int,方法是一开始就不要让它们浮动。 // 运算符执行整数除法,截断结果。这让您可以保留几乎所有的原始代码。

    def estDansSousMatrice(grille,l,c,v):
        bc=(c//3)*3  # Different
        bl=(l//3)*3  # Different
    
        for i in range(bl, bl+3):
            for j in range(bc,bc+3):
                if grille[i][j]==v:
                    return True
        return False
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2016-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      相关资源
      最近更新 更多