Python lower()函数

时间:2017-10-07 06:00:49

标签: python string

我有问题。我现在正在学习Python,并将此代码放在我的IDE中:

def get_gender(sex="Unknown"):
    sex = sex.lower()
    if sex is 'm':
        sex = 'Male'
    elif sex is 'f':
        sex = 'Female'
    print(sex)


get_gender()
get_gender("f")
get_gender("m")

我不知道它为什么不打印"男性"和"女性"

为什么

"f".lower() 

不同于

"f"

1 个答案:

答案 0 :(得分:3)

您的代码是基于错误地认为is==在功能和用途上等效而写的......

您的代码应如下所示......

def get_gender(sex="Unknown"):
    sex = sex.lower()
    if sex == 'm':                        # change 'is' to '=='
        sex = 'Male'
    elif sex == 'f':                      # change 'is' to '=='
        sex = 'Female'
    print(sex)

get_gender()
get_gender("f")
get_gender("m")

出了什么问题......

is测试两个对象是否是同一个对象

==测试两个值是否相等

当Python创建对象时,会为它们提供唯一标识符。通常,is测试以查看两个对象的标识符是否相同,从而指示对象是相同的。在这种情况下,您提供给函数的参数(即' m')与您在要比较的函数中定义的对象不同(即{中的' m' {1}}声明)。

if sex is 'm'测试两个对象是否具有相同的值。