Python - 如何存储一定数量的值

时间:2015-02-18 22:31:31

标签: python

我有一个程序,这是一个测验并且它根据他们的班级存储分数,该程序还询问教师他们想要查看哪个班级,以及他们可以通过哪种方式查看结果,例如按字母顺序排列,升序排列和班级的平均值。我希望程序只存储该人的最后3个分数。我不知道如何做到这一点。任何帮助将不胜感激。

将分数写入txt文件的代码如下所示:

count = str(count)

if classno == 1:
    abc = open("class1.txt" , "a" ,)
    abc.write(name)
    abc.write(",")
    abc.write(count)
    abc.write("\n")
    abc.close()

计数是他们得到的分数,并且有名字,有名字。

我在文本文件中的数据如下所示:

Test,10
Test,8
Test,2
Test,4
Geoff,2
Geoff,8
Geoff,4
Geoff,10
#etc.

我想要它所以它会覆盖那里最新的得分与最新得分,所以它只会存储3分。

4 个答案:

答案 0 :(得分:1)

您可以使用像

这样的列表
scores = [1, 2, 3]

scores.insert(0,'new')
scores.pop()
# scores is now ['new', 1, 2]

答案 1 :(得分:1)

如果您将分数存储在列表中,则可以使用索引来获取最后三个分数

quiz_scores = [5,7,4,8,9,10]
if len(quiz_scores) < 3:
    store_scores(quiz_scores) #not a real function, just whatever you want to do with the scores
else:
    store_scores(quiz_scores[-3:]) 

注意:仅当您按照第一次得分为第一次测验时得分的时间顺序存储得分并且最后得分为最后一次得分时,此操作才有效测验已被采纳

答案 2 :(得分:0)

有一个能处理你最后三个分数的功能:

scores = [10, 24, 37]
def update_score(score):
    if len(scores) < 3:
        scores.append(score)
    else:
        newscore = scores[1,2]
        newscore.append(score)
        scores = newscore

几乎肯定有一种更聪明的方法可以做到这一点,但现在已经很晚了,我已经厌倦了从手机上写这个(手头没有python翻译来测试东西),但是你得到了一般的想法。

答案 3 :(得分:0)

我会使用字典对象,如下所示:this_classes_scores = {}。这将允许您存储诸如获得哪个分数的内容。但是,如果你不需要那些细节,列表就可以了(你可以看看芬恩的答案)。

class_a = {
    "bob": 75
    "joe": 85
    "dan": 99
    "mike": 1
    }

然后,您可以通过像print class_a['bob']这样的索引来访问信息,或者您可以通过调用字典的方法dict.itertools()来迭代这些信息。