Discuss / Python / 请教大神 同样的代码为什么报错?

请教大神 同样的代码为什么报错?

Topic source

心中熱望

#1 Created at ... [Delete] [Delete and Lock User]

代码A

class Student(object):

    def __init__(self, name, gender):

        self.name = name

        self.__gender = gender

    def get_gender(self):

        return self.__gender

**    def set_gender(self,gender):**

**        if gender == 'male' or 'female':**

**            self.__gender = gender**

**        else:**

**            raise ValueError**


代码B

class Student(object):

    def __init__(self, name, gender):

        self.name = name

        self.__gender = gender

    def get_gender(self):

        return self.__gender

**    def set_gender(self,gender):**

**        if gender != 'male' or 'female':**

**            raise ValueError**

**        else:**

**            self.__gender = gender**


加黑的部分,为什么代码A就能通过测试,代码B就会报错ValueError呢??

真的不明白这个bug是怎么回事

代码b的or 改成and

A代码中 == 意思是性别是否为男或女,如果是,就修改。B代码中!= 意思是性别既不是男也不是女的时候,就不修改。怎么能说是一样的代码呢

你B代码中的or让你的意思变成了如果性别不是男,或者不是女的话,就直接报错。


  • 1

Reply