首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >存储最后3个分数?

存储最后3个分数?
EN

Stack Overflow用户
提问于 2016-01-24 00:17:55
回答 2查看 169关注 0票数 0

我尝试编写代码,将最近的3个分数保存到一个列表中,然后将该列表附加到一个主类列表中,创建一个列表,其中每个学生和他们的分数都是一个单独的列表。代码设法将分数附加到现有列表中,但是不显示第一个分数,并在添加3个分数之前将其删除。有人能帮帮我吗?

代码语言:javascript
复制
Student = [] #new list created each time for student
max_scores = 3 #3 scores only at a time in the student's list

if ClassName == "10x1": #if student's input for class is 10x1
    for userName in Class10x1: 
        if userName in Student and len(str(score)) >= max_scores:
            Student.pop([1]) #removes second element in list
            Student.append(score) #adds most recent score
            break #stops code
        elif userName in Student and len(str(score)) < max_scores:
            Student.append(score)
            break
        else:
            Student.append(userName)
            Student.append(score)
            break
    Class10x1.append(Student) #student's list is appended to main class list

上面的代码是这样打印的:

代码语言:javascript
复制
[[]]
[['Jagraj', 1], ['Jagraj', 1]]
[['Jagraj', 1, 3], ['Jagraj', 1, 3], ['Jagraj', 1, 3]]

但是,我希望这样打印它:

代码语言:javascript
复制
[['Jagraj', 0, 1, 3]]

然后一旦学生有了第四次测试,第一个分数就被删除了,所以它变成了['Jagraj',1,3,5],有没有办法做到这一点,或者我必须重建我存储数据的方式?

EN

回答 2

Stack Overflow用户

发布于 2016-01-24 00:42:09

你不应该在Python中使用Camelcase符号,除非你正在编写类,而你并不是这样做的,这会让你在阅读代码时感到困惑。请阅读PEP8指南,了解Python语言中的命名约定。https://www.python.org/dev/peps/pep-0008/

现在对于你的问题,你的代码看起来有点难读,所以我将尝试检查你所面临的问题。

首先,不要使用嵌套列表,而是使用字典(hashmap)。事情会变得更容易处理。

假设我们有一个字典对象:

代码语言:javascript
复制
from collections import deque

a={"ishaan":deque(maxlen=3)}
a['ishaan'].append(1)
a['ishaan'].append(2)
a['ishaan'].append(3)

然后我需要做的就是给这个增加一个分数:

代码语言:javascript
复制
new_score=5
a['ishaan'].append(new_score)
print(a)

这将打印出来

代码语言:javascript
复制
{'ishaan':[2,3,5]}

所以,现在事情变得更容易处理了,我猜你的问题也得到了回答。我没有解决你的问题,但我想你可以从这里得到一个提示,并解决你的问题。

票数 2
EN

Stack Overflow用户

发布于 2016-01-24 00:45:55

在学生的对象中存储完整的成绩列表,然后只允许按索引打印其中的一部分,不是更容易吗?

代码语言:javascript
复制
class Student:
    def __init__(self, studentname):
        self.Name = studentname
        self.Grades = []

    def last3grade(self):
        return [self.Name, Grades[len(self.Grades)-1],Grades[len(self.Grades)-2],Grades[len(self.Grades)-3]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34965772

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档