我创建了一个简单的代码,如下所示:
name = str(input ("What is your name?"))
gender = str(input ("What is your gender?"))
if gender == 'male' or 'Male':
print ("Hello Mr %s" % (name))
elif gender == 'female' or 'Female':
print ("Hello Mrs %s" % (name))
else:
print ('Invalid gender. Please try again.')
但是,无论我输入什么性别(甚至像test
这样的随机单词),它总是打印出if语句,这意味着它满足gender == male
部分。就像我键入female
一样,if语句仍会打印出来。我在这里缺少什么?
答案 0 :(得分:4)
首先使用正确的变量名称:
gender = input("What is your gender?")
其次,使用or
是错误的:
>>> 'male' or 'Male'
'male'
使用:
if gender == 'male' or gender == 'Male':
或者使用:
if gender.lower() == 'male':
name = input("What is your name?")
gender = input("What is your gender?")
if gender.lower() == 'male':
print("Your are %s" % (gender))
elif gender.lower() == 'female':
print("Your are %s" % (gender))
else:
print('Invalid gender. Please try again.')
name = input("What is your name?")
gender = input("What is your gender?")
if gender.lower() in ('male', 'female'):
print("Your are %s" % (gender.lower()))
else:
print('Invalid gender. Please try again.')
答案 1 :(得分:0)
当与多个字符串进行比较时,您需要采用不同的方式:
if gender == 'male' or gender == 'Male':
或者更简单:
if gender in ['male', 'Male']:
或者使用一套:
if gender in {'male', 'Male'}:
只有两件物品的速度差别不大,但有很多 一个集合的项目会更快,因为它使用哈希表,而列表 使用线性搜索。
现在,至于你的代码发生了什么。如果你这样做:
if gender == 'male' or 'Male':
你说的是:
if (gender == 'male') or ('Male'):
所以,无论gender
是什么,如果第一次比较是False
,那么
将继续'Male'
。这是一个非空字符串,所以它总是如此
True
和条件总是最终True
。