2017-12-03 5 views
-1

皆さんこんにちは皆、私は学生名とピクルスを使って2つのクイズグレードを入力したいと思っています。これらの成績が入力されたら、私はレポートを作成したいと思うし、メニューオプション2の個々の学生を検索し、メニューオプション3のすべての生徒を表示しようとしたが、印刷しようとするたびにエラーコードが表示されるそれ。学生と全学生のために学生グレードのメニューをロードしようとしているエラーコード

import pickle 

def menu(): 
    selection = input("0\tExit" 
        "\n1\tEnter Student Name/Grades" 
        "\n2\tIndividual Report" 
        "\n3\tReports" 
        "\nEnter Menu Number: ") 
    if selection == "0": 
    systemExit() 
    if selection == "1": 
    studentData() 
    if selection == "2": 
    singleReport() 
    if selection == "3": 
    studentReports() 

def systemExit(): 
    exit() 

def studentData(): 
    name = input("Enter Student Name: ") 
    quiz1 = input("Enter Quiz 1: ") 
    quiz2 = input("Enter Quiz 2: ") 

with open("pStudent_Quiz_Grades.p", "ab") as pFile: 
    pickle.dump((name, (quiz1, quiz2)), pFile) 
clearScreen() 
return() 

def clearScreen(): 
    print("\n" * 5) 
    return() 

def singleReport(): 
    pFile = open("pStudent_Quiz_Grades.p", "rb") 
    grades_dict = pickle.load(pFile) 

    search = input("Enter a Name to Search: ") 

    for name in grades_dict: 
    if name.upper() == search.upper(): 
     print(name+": "+str("pStudent_Quiz_Grades.p"[name])) 

def studentReports(): 
    pFile = pickle.load(open("pStudent_Quiz_Grades.p", "rb")) 
    print(pFile) 

while True: 
    menu() 
+0

エラーとはどのような行ですか? – aBiologist

+0

そのエラーを追加する必要があります。 – hasanghaforian

+0

エラーは基本的に "def singleReport():"と "def studentReports():"ですが、私が得るエラーコードは "defupdateReport():"の "タプルオブジェクトに属性がありません"私はすべての生徒の成績を表示しようとしていますが、ただ1人しか@aBiologistを表示しようとしていません。 – Bray98

答えて

0

私が唯一として読み込み、私が与えられているエラーで私の答えを基づかています:

Traceback (most recent call last): File "D:/PyCharm Projects/Fundamentals of Programming/StuGrades HW.py", line 57, in <module> menu() File "D:/PyCharm Projects/Fundamentals of Programming/StuGrades HW.py", line 21, in menu singleReport() File "D:/PyCharm Projects/Fundamentals of Programming/StuGrades HW.py", line 49, in singleReport if name.upper() == search.upper(): AttributeError: 'tuple' object has no attribute 'upper' 

その名を示すエラーが方法上限とだけ文字列がこれを許可していカントタプルです方法。あなたは名前が似てだけでなく、データ名の種類は明らかであるべきであるかどうか確認することができ、この印刷文で

for name in grades_dict: 
print "name", name "and type is", type(name) 
if name.upper() == search.upper(): 
    print(name+": "+str("pStudent_Quiz_Grades.p"[name])) 

:だから私はあなたのような何かを行うことができ、印刷を使用して簡単なデバッグを行うことをお勧めタプル。また、検索が文字列変数であると仮定した場合、文字列とタプルを比較することはできません。ですから、デバッグをした直後に名前を文字列に変換して、検索が文字列であればプログラムが比較できるようにすることをお勧めします。

+0

さて、私はそれを試してみましょう!ありがとう@aBiologist – Bray98

関連する問題