我有问题。我现在正在学习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"
答案 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'
测试两个对象是否具有相同的值。