我的 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']
问题是当你没有使用
一个比较,它被视为 True
或 False
。空变量,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'
好的问题是,我正在尝试为角色 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']
问题是当你没有使用
一个比较,它被视为 True
或 False
。空变量,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'