【发布时间】:2013-04-18 03:49:43
【问题描述】:
您好,我在测试 sript 中的非整数时遇到问题。我正在尝试编写一个函数,如果数独有效则返回 True,否则返回 False。数独的 2 条规则: 1) 正方形的每一列包含从 1 到 n 的整数中的每一个恰好一次。 2) 正方形的每一行包含从 1 到 n 的每个整数恰好一次。我遇到的问题是函数“incorrect4”和“incorrect5”。 Incorrect4 显示 True,即使它不是整数/整数,并且不正确 5 显示错误消息:+: 'int' 和 'str' 不支持的操作数类型。我尝试了多种测试整数的方法,但不正确的“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)
【问题讨论】:
-
您是否尝试过使用
isinstance(number,int),如果number是整数,它会返回True? -
小心,布尔值也可能返回 true
-
这是我不知道的奇怪行为。
isinstance(number,int) and not isinstance(number, bool)会起作用吗? -
另外,尝试显示堆栈跟踪,以便我们可以看到正确的错误消息及其来源。
-
这是因为 bool 是 python 中
int的subclass。不过应该不会引起问题...
标签: python integer syntax-error