我对这些类和对象做错了什么

时间:2013-12-09 15:51:50

标签: python class object

编写程序以在班级中存储学生详细信息。该信息应包括

studentnumber,第一个姓名,姓名和用户名。 包含一个返回学生电子邮件地址的函数。您可以通过在用户名中添加“@ coventry.ac.uk”来构建电子邮件地址。所以,Joe Blogs,用户名 blogsj将获得电子邮件地址blogsj@coventry.ac.uk

2任务2

创建一个程序,该程序使用任务1中的类来收集来自的学生记录列表 用户并允许使用电子邮件地址列出它们。 您应该为用户提供一个菜单系统。

#Python Lab9 Task1 & Task2
class student(object):
    def _init_(self,student_ID,name,surname,username):
        self.student_ID = student_ID
        self.name = name
        self.surname = surname
        self.username = username

    def email(self):
        return self.username, "@coventry.ac.uk"
    def _str_(self):
        return "%d %s %s %s"%(self.student_ID,self.name,self.surname,self.username)

if __name__ == '__main__':
    students=[]
    user=""

    while user not in ["Q","q"]:
        print "Menu"
        print "1. Show student detail"
        print "2. Create new student detail"
        print "3. Quit"

        user=raw_input(">")
        if user=="1":
            for i in students:
                print i

        elif user=="2":
            print "Creating a new student detail"
            print "-----------------------------"

            student_ID=raw_input("Student ID:")
            name=raw_input("First Name:")
            surname=raw_input("Surname:")
            username=raw_input("Username:")

            s = student(student_ID,name,surname,username)
            students.append(s)

        elif user=="3":
            exit

1 个答案:

答案 0 :(得分:2)

__init____str__需要下划线:

class student(object):
    def __init__(self,student_ID,name,surname,username):
    ...
    def __str__(self):

这是reference


此外,exit将无效,除非您通过在其后面放置()来调用它:

elif user=="3":
    exit()

最后,由于self.student_ID将是一个字符串,因此您需要使用%d替换此行中的%s

return "%s %s %s %s"%(self.student_ID,self.name,self.surname,self.username)

%d仅用于整数。