2017-05-07 5 views
0

リストに5つの学生情報がリストされていて、これをStudentクラスに渡しています。私はこれを成功させたようですが、以前はリストに追加された値にアクセスして変更する方法がわかりません。Pythonがリストをクラスに渡してインデックスで値を参照しようとしています

class Student: 

    def __init__(self, student_name, student_id, student_gpa, student_grade, student_time): 
     self.student_name = student_name 
     self.student_id = student_id 
     self.student_gpa = student_gpa 
     self.student_grade = student_grade 
     self.student_time = student_time 

student_list = [] 
for i in range(5): 
    student_name = input("Please enter student's name: ") 
    student_id = input("Please enter student's ID number: ") 
    student_gpa = input("Please enter student's GPA: ") 
    student_grade = input("Please enter student's expected grade: ") 
    student_time = input("Please enter if student is a part or full time student: ") 
    student_list.append(Student(student_name, student_id, student_gpa, student_grade, student_time)) 

生徒の名前を参照し、最初に入力したものから成績を変更するオプションを追加することはできますか?

+2

名前で生徒にアクセスするには、リストではなく辞書を使用する方がよいでしょう。 – JohanL

答えて

1

ここでは、スチューデントオブジェクトのリストがあり、リストはかなり小さいので、リストをループして生徒を見つけることができます。 生徒IDは、特定の生徒を識別するユニークな方法です。

def change_gpa(id): 
    for student in student_list: 
     if student.student_id == id: 
      # Take input from the user of the changes to be made 
      # Example gpa 
      student.student_gpa = input('Enter new gpa') 
      return 
change_gpa(input('Enter the student id whose credentials have to be changed')) 
+0

あなたが学生を見つけたらループから抜け出すべきである – Barmar

+0

それを指摘してくれてありがとう.Changes done @Barmar – bigbounty

1

あなたは単に例えば、それを反復することができ、Studentクラスのインスタンスを含むリストをahve:

for student in student_list: 
    if student.student_id == something: 
     student.student_grade = whatever #it changes the value 

または、あなたはあなたができることのリストで、変更したい正確にどの学生わかっている場合:

student_list[0].student_grade = whatever #assuming you want to modify the first student in the list 
1

のPython 3:

class Student: 
    def __init__(self, student_name, student_id, student_gpa, student_grade, student_time): 
     self.student_name = student_name 
     self.student_id = student_id 
     self.student_gpa = student_gpa 
     self.student_grade = student_grade 
     self.student_time = student_time   

student_list = [] 
for i in range(3): 
    student_name = input("Please enter student's name: ") 
    student_id = input("Please enter student's ID number: ") 
    student_gpa = 3.73 
    student_grade = "B-" 
    student_time = 2017 
    ''' 
    student_gpa = input("Please enter student's GPA: ") 
    student_grade = input("Please enter student's expected grade: ") 
    student_time = input("Please enter if student is a part or full time student: ") 
    ''' 
    student_list.append(Student(student_name, student_id, student_gpa, student_grade, student_time)) 

print("Origianl Information") 
for student in student_list: 
    print(student.student_id,student.student_name,student.student_gpa) 

search_student = input("Enter a student name to change GPA: ") 
for student in student_list: 
    if student.student_name == search_student: 
     student_gpa = input("Enter new GPA of "+search_student+": ") 
     student.student_gpa = student_gpa 

print("Updated Information") 
for student in student_list: 
    print(student.student_id,student.student_name,student.student_gpa) 

出力:

Please enter student's name: Shovon 
Please enter student's ID number: 2389 
Please enter student's name: Aslam 
Please enter student's ID number: 2383 
Please enter student's name: Nafis 
Please enter student's ID number: 56 
Origianl Information 
2389 Shovon 3.73 
2383 Aslam 3.73 
56 Nafis 3.73 
Enter a student name to change GPA: Shovon 
Enter new GPA of Shovon: 3.96 
Updated Information 
2389 Shovon 3.96 
2383 Aslam 3.73 
56 Nafis 3.73 

N.B:私は巨大な入力を低減するためのラインの一部をコメントしています。それらのコメントを外します。

関連する問題