def name(x):
return x==('Jenson'or'Amra'or'McCay'or'Spinner'or'Jones')
print(name('Jenson'))
print(name('McCay'))
这就是问题:
“编写一个函数,将一个人的名字作为输入(例如, “史密斯”,“琼斯”等)此功能应检查是否有名称 是董事会中五个人的名字之一。这五个名字是: “Jenson”,“Amra”,“McCay”,“Spinner”和“Jones”。如果输入名称 进入函数是这五个名称之一,功能应该 返回布尔值True,如果不是,则函数应该返回 返回False。 (记住输入类型,描述和注释的注释 测试用例)测试功能以确保其正常工作。“
如果我正在做Jenson,它会起作用,但如果我输入任何其他名称,它会显示为false。
答案 0 :(得分:4)
试试这个,
def name(x):
return x in ('Jenson', 'Amra' ,'McCay', 'Spinner','Jones')
答案 1 :(得分:3)
“长”的方式怎么样:
def check_name(x):
names_to_check = ('Jenson','Amra','McCay','Spinner','Jones')
for i in names_to_check:
if i == x:
return True
return False
以下是您的代码中发生的事情:
x = 'Jenson'
,因为这是你传递的内容。
这一行x == ('Jenson' or 'Amra' or 'McCay' or 'Jones')
实际上是一个布尔操作,而的结果总是Jenson
。
布尔运算检查真值,Python中的非空字符串始终为True
。实际上('Jenson' or 'Amra' or 'McCay' or 'Jones')
所说的是:
“Jenson
或Amra
或McCay
或Jones
,其中一个是True
,请将值设置为”。
由于Jenson
是第一个项目,而它的True
(也就是说,它不是一个空字符串),整个表达式等于Jenson
(这就是它只能起作用的原因)当你传入Jenson
)时。
一个简单的例子:
>>> ('a' or 'b' or 'c')
'a'
>>> ('b' or 'a' or 'c')
'b'
>>> ('' or '' or 'a')
'a'
>>> (0 or 0 or 1)
1
>>> (False or False or True)
True
最后三个说明了相同的比较。我正在检查两个空字符串和'a'
。由于Python中的空字符串为False
,因此唯一的“真”是'a'
,这就是返回的内容,就像我将0
与{{1}进行比较一样}。
答案 2 :(得分:0)
语法x ==('Jenson'或'Amra'或'McCay'或'Spinner'or'Jones')是错误的。 应该像Adem说的那样。或者
def name(x):
return x=='Jenson' or x== 'Amra' or x == 'McCay' or x == 'Spinner' or x == 'Jones'
答案 3 :(得分:0)
我想现在发生的事情是('Jenson'or'Amra'or'McCay'or'Spinner'or'Jones')
首先被评估,并被评估为'Jenson'
。这是在x
被考虑之前计算的,因为它在括号中。然后检查x
是否与Jenson
相等。您需要使用更高级的语法,如Adem的答案中的x in...
,或者使用return x == 'Jenson' or x == 'Amra' or x == 'McCay'...
,以便逐个运行每个比较。