当前位置: 首页 > 知识库问答 >
问题:

为什么这不计算每一行打印?

叶琦
2023-03-14

我已经把一些代码放在一起,对人们的考试成绩进行排序,这样他们就可以看到他们的最高成绩是什么,以及他们什么时候达到的。我创建了以下代码,但它没有显示1、2、3等计数器,我缺少什么?

local tt ={}

local verbalreasoning = {
    { test=1, name="Ben", res=12, testdate="June 20" },
    { test=2, name="Ben", res=12, testdate="June 21" },
    { test=3, name="Ben", res=12, testdate="June 22" },
    { test=4, name="Ben", res=14, testdate="June 23" },
    { test=5, name="Ben", res=12, testdate="June 24" },
    { test=6, name="Ben", res=17, testdate="June 25" },
    { test=7, name="Ben", res=16, testdate="June 26" },
    { test=8, name="Ben", res=12, testdate="June 27" }
}

for _, v in ipairs(verbalreasoning) do
    table.insert(tt, { myres=v.res, myname=v.name, mydate=v.testdate })
    end

table.sort(tt, function(a,b) return a.myres > b.myres end) -- sort highest to lowest

local count = 0
local increment = 1

for _,v in pairs(tt) do
    local count = count + increment
print(count, v.myres, v.myname, v.testdate)
end

它打印以下内容,所有内容都显示1,而它应该是1、2、3等。

1     17     Ben     
1     16     Ben     
1     14     Ben     
1     12     Ben     
1     12     Ben     
1     12     Ben     
1     12     Ben     
1     12     Ben     

共有1个答案

弓宏茂
2023-03-14

不要在for循环中使用local
因为您在每次迭代中都将其声明为新的
。。。这将从声明的外部循环local count
变成0,而在循环中不使用local,您可以更改并迭代声明的外部local变量
。。。从而在循环中得到一个迭代的计数。

 类似资料:
  • 公共静态无效字(字符串文本){int numWords=1; 字符串“是this_one_long_word还是几个???你觉得怎么样??太多“应该打印10个字和”!这使用periods.as.word.delimiters,可能很棘手。“应该打印10个单词。 描述如下:一个单词是由一个或多个字符组成的序列,由空格或句子终止符(句号、冒号、分号、问号、感叹号)分隔,无论它是否为实际的英语单词。空白

  • (英语不是我的第一语言,所以请原谅任何错误) 我使用SparkSQL从hive表中读取4.7TB的数据,并执行计数操作。做那件事大约需要1.6小时。而直接从HDFS txt文件读取和执行计数,只需要10分钟。这两个作业使用相同的资源和并行性。为什么RDD计数需要这么多时间? 配置单元表大约有30万列,序列化可能代价高昂。我检查了spark UI,每个任务读取大约240MB的数据,执行大约需要3.6

  • 它以年为单位正确地显示了图表。但年末的存款金额(a)保持不变(1000); 直到利率达到10%。

  • 问题内容: 下面是分别用和编码的简单过程(对于那些对此过程感到好奇的人,这是针对Euler项目5号问题的解决方案)。 我的问题是,下面的代码仅需9秒即可迭代,而代码完成则需要283秒(确切地说,在Python 3.4.3-64位上为283秒,在Python 2.7.9-32位上为329秒)。 到目前为止,我已经编码的两种类似的过程和与执行时间的差异,具有可比性。但是,这次,经过的时间之间存在极大的

  • 我想知道当您试图捕获StackOverflowError时会发生什么,并提出了以下方法: 现在我的问题是: 为什么这个方法打印'4'? 我想可能是因为在调用堆栈上需要3个段,但我不知道3这个数字来自哪里。当您查看的源代码(和字节码)时,通常会导致比3个多得多的方法调用(因此调用堆栈中的3个段是不够的)。如果这是因为Hotspot VM应用的优化(方法内联),我想知道在另一个VM上结果是否会有所不同

  • 在每个print语句之前使用扫描器解决了这个问题,但我想要一个好的编程方法来解决这个问题。