-1

我试图让用户继续输入模块和成绩并将其存储为字典 {module:grades} 并将此字典存储在列表中。

我在这方面有 3 个问题。

  1. 我无法在 F7 的第二个 raw_input 中使用 F6。
  2. 其次,我正在使用“完成”来停止循环。当我打印信息时,它看起来像这样:

{完成:100} {完成:80}

等等..所以模块名称不断被“完成”这个词所取代。

  1. 最后,我试图使打印出来的内容如下所示:(现在还没有变……)

成绩:计算机科学:100 计算机图形学:80

我已经完成了剩下的工作,而不是我坚持的这部分。任何帮助都深表感谢。太感谢了。

students = []

class Student:
    grades = {}

    def setGrades(self, grades):
        self.grades = grades

    def addStudent():
        while F6 != 'done':
            F6 = raw_input("Please enter module name. type 'done' to quit: ")
            if F6 == 'done':
                break
            F7 = raw_input("Please enter the grades for " ,F6, ':')


student.setGrades({F6:F7})
4

1 回答 1

0

对于初学者,您的代码(原样)应该看起来像这样

students = []

class Student:
    grades = {}

    def setGrades(self, grades):
        self.grades = grades

    def addStudent():
        while True:
            F6 = raw_input("Please enter module name. type 'done' to quit: ")
            if F6 == 'done':
                break
            F7 = raw_input("Please enter the grades for " ,F6, ':')
            student.setGrades({F6:F7})

在我看来,您还应该有一个更好的 api 来设置成绩。这样的事情就足够了imo:

def set_grades(self, lesson, grade):
    self.grades[lesson] = grade

最后为了打印成绩,你应该有这样的方法:

def print_grades(self):
    for lesson, grade in grades.items():
        print lesson, grade

最后但并非最不重要的是,在您的原始输入中,为了使用 F6,您必须执行以下操作:

F7 = raw_input("Please enter the grades for %s: " % F6)

总而言之,如果我是你,我的代码将如下所示:

class Student:
    grades = {}

    def set_grades(self, lesson, grade):
        self.grades[lesson] = grade

    def addStudent():
        while True:
            F6 = raw_input("Please enter module name. type 'done' to quit: ")
            if F6 == 'done':
                break
            F7 = raw_input("Please enter the grades for %s: " % F6)
            student.setGrades(F6, F7)

    def print_grades(self):
        for lesson, grade in grades.items():
            print lesson, grade
于 2012-12-07T09:33:31.897 回答