0

今日すでに質問を投稿しましたが、2 つの問題がありました。そのうちの 1 つは完全に解決されましたが、少し複雑になりました。申し訳ありませんが、一部のピープを混乱させたため、他の質問を個別に投稿しています。

私はpythonが初めてなので、事前にお詫び申し上げます。どんな助けでも大歓迎です。私はこのコードで 2 週間立ち往生しており、トンネル ビジョンがあり、解決できません。

基本的に、私たちの課題は、オブジェクト指向プログラミングを理解することでした。残念ながら、多くの人が嫌う「get」と「set」を使用する必要がありますが、家庭教師によると、そのように使用する必要があります。ユーザーに 3 つのオプションを含む画面が表示されるプログラムを作成するように言われました。1. 生徒を追加します。2. 学生の表示と 3. 学生の削除.. AddStudent 関数内で、ユーザーに fname Lname 年齢 学位 学習 ID 番号 (これらは簡単なビットです) と、各モジュールのモジュール名とグレードを入力するように求める必要があります。ループを作成して、ユーザーにモジュールと対応するグレードを入力するように何度も要求し、ユーザーが modulname フィールドに -1 を入力すると、ループから抜け出します。しかし、students[]という名前のリストに保存しようとすると…… (これは、明らかにグローバルにするために、すべての関数の上の私のコードの一番上にあります)ユーザーからのすべての入力を保存します re: age name などですが、モジュール名とグレードを保存する場合は、最後の入力のみを保存し、保存しません必要な複数の入力。保存されていないAddStudent関数内にあるか、ViewStudent関数内にあるかはわかりません:両方とも以下にあります(GETとSETの悪意を使用する必要があることを思い出してください);)

students[] # Global List

def addStudent():
    print 
    print "Adding student..."
    student = Student()
    firstName = raw_input("Please enter the student's first name: ")
    lastName = raw_input("Please enter the student's last name: ")
    degree = raw_input("Please enter the name of the degree the student is studying: ")
    studentid = raw_input("Please enter the students ID number: ")
    age = raw_input("Please enter the students Age: ")

    while True:
        moduleName = raw_input("Please enter module name: ") 
        if moduleName == "-1":
            break
        grade = raw_input ("Please enter students grade for " + moduleName+": ")

    student.setFirstName(firstName) # Set this student's first name
    student.setLastName(lastName)
    student.setDegree(degree)# Set this student's last name
    student.setGrade(grade)
    student.setModuleName(moduleName)
    student.setStudentID(studentid)
    student.setAge(age)
    students.append(student)
    print "The student",firstName+' '+lastName,"ID number",studentid,"has been added to the system."

...................................

def viewStudent():
    print "Printing all students in database : "

    for person in students:
            print "Printing details for: " + person.getFirstName()+" "+ person.getLastName()
            print "Age: " + person.getAge()
            print "Student ID: " + person.getStudentID()
            print "Degree: " + person.getDegree()
            print "Module: " + person.getModuleName()
            print "Grades: " + person.getGrade()
4

2 に答える 2

0

次のようなものが必要なようです:

modules = {}

while True:
    module_name = raw_input("Please enter module name: ") 
    if module_name:
        grade = raw_input ("Please enter students grade for " + module_name +": ")
        modules[module_name] = grade

モジュールは辞書 (他の言語では「ハッシュ マップ」) であり、各 mod 名がキーであり、グレードが値です。または、ボートが浮かぶ場所ならどこでもタプルを使用して行うこともできます。

停止条件として -1 をチェックする代わりに、真かどうかをチェックします。Python では、空のものはすべて偽と評価されます。

于 2013-01-03T14:38:44.063 に答える
0

あなたの問題は、モジュールが変更し続ける単一の変数であることです。代わりに、それをリストにします。

while True:
        moduleName = raw_input("Please enter module name: ") 
        if moduleName == "-1":
            break
        grade = raw_input ("Please enter students grade for " + moduleName+": ")

次のようなものでなければなりません

modules = []

while True:
        moduleName = raw_input("Please enter module name: ") 
        if moduleName == "-1":
            break
        grade = raw_input ("Please enter students grade for " + moduleName+": ")
        modules.append((moduleName, grade))

student「Modules」でリストである新しい変数を追加します。

次にmodules、タプルのリストになり、(moduleName, grade)それらを表示するには、次の行を次のように変更しますviewstudent

        print "Module: " + person.getModuleName()
        print "Grades: " + person.getGrade()

に:

for module, grade in person.getModules():
       print "Module: " + module
       print "Grades: " + grade
于 2013-01-03T13:52:23.193 に答える