2012-12-07 24 views
-1

我想讓用戶不斷輸入模塊和成績,並將其作爲字典{模塊:成績}存儲並將此字典存儲在列表中。Python - 我的循環和打印格式的問題

我有3個問題在這。

  1. 我無法在F7的第二個raw_input中使用F6。
  2. 其次,我正在使用'done'來停止循環。當我打印它看起來像這樣的信息:

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

等..所以模塊名不斷得到由單詞「完成」所取代。

  1. 最後一點我想使打印出如下所示:(這是不是現在hapening ..)

等級:計算機科學: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}) 
+1

你需要正確縮進你的代碼,縮進在Python中是有意義的。 – 2012-12-07 09:29:38

回答

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