python - 测试非整数(小数和字符串)

标签 python integer syntax-error

嗨,我在草皮中无法测试非整数问题。我正在尝试编写一个函数,如果数独有效,则返回True,否则返回False。 Sudoku的2条规则:1)正方形的每一列包含从1到n的整数中的每一个正好一次。 2)平方的每一行包含从1到n的整数中的每一个正好一次。我遇到的问题是函数“incorrect4”和“incorrect5”。即使它不是整数/整数,Incorrect4仍显示True,并且错误5显示错误消息:+不支持的操作数类型:“int”和“str”。我尝试了多种测试整数的方法,但是不正确4中的“1.5”值仍​​然显示为True。另外,我一直在寻找解决方案不支持的操作数类型错误,但无法修复。我知道还有其他更有效的方法可以解决此问题,但是任何帮助将不胜感激!

correct = [[1,2,3],
       [2,3,1],
       [3,1,2]]
incorrect4 = [['a','b','c'],
          ['b','c','a'],
          ['c','a','b']]

incorrect5 = [ [1, 1.5],
           [1.5, 1]]

def check_sudoku(square):
    a = 0
    result = [sum(l) for l in square]
    sum_list = []

    all(type(item)==int for item in square)
    return True

    for col in range(len(square[0])):
        sum_list.append(sum(row[col] for row in square))
        if sum_list == result: return True
    return False 

    for row in range(len(square)):
        if sum(square[a]) == sum(square[a+1]):
            a += 1
            return True
    return False

print check_sudoku(correct)
print check_sudoku(incorrect4)
print check_sudoku(incorrect5)

最佳答案

由于数独谜题必须具有1到9之间的整数,因此您不希望传递其他疯狂的整数,例如-4294967296。恩,我认为这样的检查比较合适:

d = 3  # edge-size of your sudoku
all(n in range(1, d**2) for row in sudoku_puzzle for n in row)

其中sudoku_puzzle可以是列表列表,但您可以考虑使用numpy数组。

您仍然需要再次检查以确保sudoku_puzzle的尺寸正确。

关于python - 测试非整数(小数和字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16074148/

相关文章:

c++ - 我试图从欧拉计划中获得最大的主要因素

c++ - float 在 C++ 中四舍五入,我不明白为什么

python - 如何从 django 主 url 文件中的应用程序导入 url

c++ - 查找序列中的 2 个最大和最小整数

python - 如何在标签中显示当前屏幕名称?

sas - 错误: P does not have a numeric suffix (SAS, RENAME)

MySQL 5.7 Windows,表键问题?

mysql - SQL查询错误: Unclosed Quote

python - 使用 Twisted 创建和部署 Python 聊天应用程序

python - 有什么方法可以从两个数据帧创建一个新的数据帧,其中一个 df 的每一行都必须重复?