Python桌

2024-04-25 04:06:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

Tags: ofinnumberfordeftablerangerow
1条回答
网友
1楼 · 发布于 2024-04-25 04:06:22

我怀疑代码中有三件事是错误,但由于您没有描述预期的行为,因此其中一件或多件可能按预期工作

第一个问题是,每次看到大于0的新值时,您都会打印出“行”号。您可能希望将print 'Number of positive entries in row '行取消缩进两级(与内部for循环相等)

第二个问题是您没有重置每行的计数,因此我建议您移动的print语句在第一行之后不会给出正确的输出。您可能希望将rowPosCount = 0行移到外循环中

最后一个问题是,您将跳过第一行和后面每行的第一个值。这是因为你的range1nm。Python索引从0开始,范围不包括它们的上限。您可能需要for r in range(n)for c in range(m),不过对表值本身(或它们的枚举)进行迭代会更具python风格

相关问题 更多 >