2016-09-20 12 views
0
class Student(object): 
    def __init__(self, name, chinese = 0, math = 0, english = 0): 
     self.name = name 
     self.chinese = chinese 
     self.math = math 
     self.english = english 
     self.total = self.chinese + self.math + self.english 
     Student.list.append(name)' 

私は学年管理システムを作成しようとしていますが、学生の得点はすべてそのクラスのクラスに保存されています。ユーザー入力に基づいてクラスStudentに新しいインスタンスを追加するにはどうすればよいですか?Pythonでユーザー入力からクラスインスタンスを追加する方法は?

name = raw_input("Please input the student's name:") 
    chinese = input("Please input Chinese score:") 
    math = input("Please input Math score:") 
    english = input("Please input English score:") 
    name = Student(name, chinese, math, english) 
    # eval(name) 
    # name = Student(name, chinese, math, english) 

私はこれらの方法で試してみましたが、うまくいきません。

+1

「new_student」とは何ですか? – Li357

+0

最後の2行のコードは、質問自体と同じように、ほとんど意味がありません。また、質問の一部としてコメントアウトされたコードを投稿するのはなぜですか? –

+1

* *は動作しません。 –

答えて

0
import pprint 
class Student(): 
#blah blah blah 

if __name__ == "__main__": 
    list_of_students = [] 
    while True: 
     if raw_input("Add student? (y/n)") == "n": 
      break 
     # ask your questions here 
     list_of_students.append(Student(# student data)) 
    for student in list_of_students: 
     pprint.pprint(student.__dict__) 
+0

sutudent ???ところで、私は、新しい学生を追加する前に、ユーザー入力が '' y''に等しいことを確認したいと思います。 –

+0

meh、preferences ...あなたが初期のリターンまたは単一のリターン関数をコーディングするのに慣れているかどうかによって決まります...自分の道に入る学生が100人いるのでユーザーがちょうどエンターを押した場合、優先されるかもしれません...ユースケース – pyInTheSky

+0

また、宗派はユートのようです:P – pyInTheSky

0

次のようにしてください。 :

from collections import defaultdict 
class Student: 

    def __init__(self, name=None, chinese=None, math=None, english=None): 
     self.student_info = defaultdict(list) 
     if name is not None: 
      self.student_info['name'].append(name) 
      self.student_info['chinese'].append(chinese) 
      self.student_info['math'].append(math) 
      self.student_info['english'].append(english) 

    def add_student(self, name, chinese, math, english): 
     if name is not None: 
      self.student_info['name'].append(name) 
      self.student_info['chinese'].append(chinese) 
      self.student_info['math'].append(math) 
      self.student_info['english'].append(english) 
     return None 

元の質問のコードには、追加メソッドはありません(コンストラクタは1つだけです)。したがって、新しい生徒の情報をオブジェクトに追加することはできません。

関連する問題