我今天已经发布了一个问题,它有2个问题。其中一个完美地解决了,然后它有点复杂。所以请原谅我,但我分别发布另一个问题,因为它混淆了一些窥视:
我是python的新手,所以请提前道歉。任何帮助深表感谢。我现在已经被困在这个代码上2周了,我有隧道视觉,无法解决这个问题:
基本上我们的任务是掌握面向对象编程。不幸的是,我们必须使用“get”和“set”,这是我学到很多人不喜欢的,但是,根据我们的导师,我们必须这样做。我们被告知要创建一个程序,用户将看到一个带有3个选项的屏幕。 1.增加一名学生2.查看学生和3.删除学生..在我的AddStudent功能中我必须要求用户输入fname Lname年龄学习ID号(这些是简单的位)以及每个模块的模块名称和等级,I已经设法创建一个循环,它将一遍又一遍地要求用户输入模块和相应的等级,并且当用户在模名字段中输入-1时将从所述循环中断。但是,当尝试将其保存到名为students []的列表中时...(在我的代码上方位于所有函数之上,显然使其全局化)它会保存来自用户re:age name等的所有输入,但是当它涉及到保存模块名称和等级,它只保存最后一个输入,而不是我需要的多个输入。我不确定它是否在我的AddStudent函数中,它没有保存或在我的ViewStudent函数中:两者都在下面(记住我必须使用GET和SET malarky);)
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()
答案 0 :(得分: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
将是(moduleName, grade)
的元组列表并显示它们,更改viewstudent
中的行:
print "Module: " + person.getModuleName()
print "Grades: " + person.getGrade()
为:
for module, grade in person.getModules():
print "Module: " + module
print "Grades: " + grade
答案 1 :(得分: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中任何空的都被评估为false。