def tableCheck(elev, n, m):
tablePosCount = 0
rowPosCount = 0
for r in range(1, n):
for c in range(1, m):
if elev[r][c] > 0:
tablePosCount = tablePosCount + 1
rowPosCount = rowPosCount + 1
print 'Number of positive entries in row ', r , ' : ', rowPosCount
print 'Number of positive entries in table :', tablePosCount
return tablePosCount
elev = [[1,0,-1,-3,2], [0,0,1,-4,-1], [-2,2,8,1,1]]
tableCheck(elev, 3, 5)
我很难让这段代码正常运行。如果有人能告诉我为什么它会给我这个输出
Number of positive entries in row 1 : 1
Number of positive entries in row 2 : 2
Number of positive entries in row 2 : 3
Number of positive entries in row 2 : 4
Number of positive entries in row 2 : 5
Number of positive entries in table : 5
我怀疑代码中有三件事是错误,但由于您没有描述预期的行为,因此其中一件或多件可能按预期工作
第一个问题是,每次看到大于0的新值时,您都会打印出“行”号。您可能希望将
print 'Number of positive entries in row '
行取消缩进两级(与内部for
循环相等)第二个问题是您没有重置每行的计数,因此我建议您移动的print语句在第一行之后不会给出正确的输出。您可能希望将
rowPosCount = 0
行移到外循环中最后一个问题是,您将跳过第一行和后面每行的第一个值。这是因为你的
range
从1
到n
或m
。Python索引从0开始,范围不包括它们的上限。您可能需要for r in range(n)
和for c in range(m)
,不过对表值本身(或它们的枚举)进行迭代会更具python风格相关问题 更多 >
编程相关推荐