我的 python 代码和 if-then 有问题

im having trouble with my python code and the if-then thing

好的问题是,我正在尝试为角色 sheet 创建一个 if then 当它询问性别时,这是我的代码

gender = input('what gender would you like your character to be? ').capitalize()
if gender == 'Male' or 'Guy' or 'man' or 'Boy' or 'M':
gender = 'He'
elif gender == 'Female' or 'Woman' or 'Girl' or 'Lady' or 'F':
gender = 'She'
else:
gender == ()
gender = 'They'

问题是……无论答案如何,它都只返回“他”……我哪里错了? 事情是......这是我通过 w3 和 youtube 学到的

我尝试了不同的编码方式...我什至尝试将其设为 def 函数,但似乎没有任何效果...

问题是您的 or 操作员没有按您的想法行事。 考虑您的 if 语句:

if gender == 'Male' or 'Guy' or 'man' or 'Boy' or 'M':

解释为:

if (gender == 'Male') or ('Guy') or ('man') or ('Boy') or ('M'):

所以每次都是 returning True 因为字符串 Guy 被解释为 True:

>>> if 'Guy': print("yes")
yes

你需要的是in运算符:

if gender in ['Male', 'Guy', 'man', 'Boy', 'M']:

但是 guy 会 return They 所以你可能想要将 gender 转换为小写:

if gender.lower() in ['male', 'guy', 'man', 'boy', 'm']

问题是当你没有使用 一个比较,它被视为 TrueFalse。空变量,0,空数组,False在python.

中被视为False
if gender == 'Male' or 'Guy' or 'man' or 'Boy' or 'M':

在这种情况下,您只是将性别与 male 进行比较。并且

'Guy' or 'man' or 'Boy' or 'M':

被视为布尔值 (True)。因此,性别总是分配给 'He' 并且通过而不去 elif 因为 If 语句中总是有一些东西 True

有两种方法可以解决此问题。

gender = input('what gender would you like your character to be? ').capitalize()

if gender == 'Male' or gender=='Guy' or gender=='man' or gender=='Boy' or gender=='M':
    gender = 'He'

elif gender == 'Female' or gender=='Woman' or gender=='Girl' or gender=='Lady' or gender=='F':
    gender = 'She'

else:
    gender = 'They'

这很不方便。第二种方法是,

gender = input('what gender would you like your character to be? ').capitalize()

if gender in ['Male','Guy','man', 'Boy', 'M']:
    gender = 'He'
elif gender in ['Female', 'Woman', 'Girl', 'Lady', 'F'] :
    gender = 'She'
else:
    gender = 'They'