0

我有以下代码:

class StudentData:
    "Contains information of all students"
    studentNumber = 0;
    def __init__(self,name,age,marks):
        self.name = name;
        self.age = age;
        self.marks = marks;
        StudentData.studentNumber += 1;
    def displayStudentNumber(self):
        print 'Total Number of students = ',StudentData.studentNumber;
    def displayinfo(self):
        print 'Name of the Student: ',self.name;
        print 'Age of the Student: ', self.age;
        print 'Marks of the Student: ', self.marks;

student1 = StudentData('Ayesha',12,90)
student2 = StudentData('Sarah',13,89)
print "*Student number in case of student 1*\n",student1.displayStudentNumber();
print "Information of the Student",student1.displayinfo();
print "*Student number in case of student 2*\n",student2.displayStudentNumber();
print "Information of the Student",student2.displayinfo();

输出是:

*学生1的学生编号*

学生总数 = 2

没有任何

学生信息学生姓名:Ayesha

学生年龄:12

学生成绩:90

没有任何

*学生2的学生人数*

学生总数 = 2

没有任何

学生信息学生姓名:Sarah

学生年龄:13

学生成绩:89

没有任何

我不明白为什么我的输出中会出现这些“无”。谁能解释一下?

4

3 回答 3

2

您应该返回这些字符串,而不是打印它们。没有返回值的函数,返回None. 另外不要在 Python 中使用分号。

def displayStudentNumber(self):
      return 'Total Number of students = {0}'.format(StudentData.studentNumber)
def displayinfo(self):
      return '''\
Name of the Student: {0}
Age of the Student: {1}
Marks of the Student {2}'''.format(self.name, self.age, self.marks)
于 2013-05-18T07:10:42.523 回答
1

因为你的函数displayStudentNumber()displayinfo()没有返回任何东西。

尝试将它们更改为:

def displayStudentNumber(self):
    return 'Total Number of students = ' + str(StudentData.studentNumber)

def displayinfo(self):
    print 'Name of the Student: ',self.name;
    print 'Age of the Student: ', self.age;
    print 'Marks of the Student: ', self.marks;
    return ''

由于该函数不返回任何内容,因此默认为None. 这就是它被退回的原因。

顺便说一句,python中不需要分号。

于 2013-05-18T07:09:42.273 回答
1

您进入None输出是因为您正在打印调用方法的返回值displayStudentNumber。默认情况下返回None.

您要么想打印方法的返回值,要么只想打印。试试这样的,

print "Student number in case of student 1"
student1.displayStudentNumber()

或者

def displayStudentNumber(self):
    return 'Total Number of students = %d' % StudentData.studentNumber

print "Student number in case of student 1", student1.displayStudentNumber()
于 2013-05-18T07:11:26.750 回答