Discuss / Python / 为什么自己测试不会报错

为什么自己测试不会报错

Topic source
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('error gender')

自己测试输入

bart.set_gender(55)

并不会报错,并且查询性别有正常结果这事为什么

>>> bart.get_gender()
'hi'

因为if语句这里 'female' 恒为true,所以不会报错?

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

应该这么写?

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

是的

想问下楼主为啥if语句这里 'female' 恒为true呀?

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

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

有什么区别吗?(萌新瑟瑟发抖)

Little_咪

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

if gender=='male' or 'female'这里判断gender=='male'是否为True,而‘female’这个只要不为空,值一直都是ture的,所以这个判断语句一直都是为True

if gender == 'male' or gender == 'female':这里是判断gender=='male'是否为True,gender=='female'是否为True,两个判断结果or的结果

信息楼上~看懂啦~

ztt库几码

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

楼主没学好c和c++ .......这在c里面是一个很不应该犯的错.....==和or一个是算术运算符一个逻辑运算符,优先级== 大于or,

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

请问大佬们这样写是测试有问题吗?小白没太懂这个问题。

这个不是要说明gender的输入是male或female就可以吗?

楼上说“ 而‘female’这个只要不为空,值一直都是ture的,所以这个判断语句一直都是为True ”。   这说明什么了啊?

==的优先级大于or,所以这样写的问题是什么呢?

求大佬解释~~万分感谢

惠民中心

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

or的判断标准就是一真为真,一个为True,那么整条语句就是True啊

大一上过c++的课记得一点点,

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

因为要先看‘==’,所以这逻辑成了 if (gender=='male') or (female), 是这个意思吗。那只要female不说明是none,这个判断就一直为true。


  • 1

Reply