Python 尝试为个人加载学生成绩菜单时出现错误代码';s和所有学生

Python 尝试为个人加载学生成绩菜单时出现错误代码';s和所有学生,python,menu,pickle,Python,Menu,Pickle,大家好,我正在创建一个学生成绩菜单,我想用pickle输入一个学生姓名和两个测验成绩。一旦这些成绩被输入,我想创建一个报告,在我试图为我的菜单选项二搜索一个学生并显示菜单选项三的所有学生之后,但每次我试图打印时都会收到一个错误代码 import pickle def menu(): selection = input("0\tExit" "\n1\tEnter Student Name/Grades" "\n2\tIn

大家好,我正在创建一个学生成绩菜单,我想用pickle输入一个学生姓名和两个测验成绩。一旦这些成绩被输入,我想创建一个报告,在我试图为我的菜单选项二搜索一个学生并显示菜单选项三的所有学生之后,但每次我试图打印时都会收到一个错误代码

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()

我的回答仅基于我所给出的错误,其内容如下:

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'

通过这个printing语句,您可以检查名称的外观以及数据名称的类型,数据名称显然应该是元组。另外,如果我们假设search是一个字符串变量,则不能将字符串与元组进行比较。因此,我建议调试完成后,将名称转换为字符串,以便允许程序比较搜索是否为字符串。

错误是什么,在哪一行?您必须添加该错误。错误基本上是针对“def singleReport():”和“def studentReports():”,但我得到的错误代码是针对“def singleReport():”表示“tuple object has no attribute”,对于“def studentReports():“我试图让所有学生的成绩显示出来,但只有一个显示@aBiologistTraceback(最近一次调用):文件“D:/PyCharm Projects/basicmentals of Programming/studentReports HW.py”,第57行,在menu()文件中”D:/PyCharm项目/编程基础/StuGrades HW.py”,第21行,在菜单singleReport()文件“D:/PyCharm项目/编程基础/StuGrades HW.py”,第49行,singleReport中,如果name.upper()==search.upper():AttributeError:'tuple'对象没有属性'upper'@hasanghaforiancan您能告诉我名字的内容吗?好的,我试试看!谢谢@aBiologist
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]))