图示出来!它不喜欢答案,但我在第一个名称中添加了一个空格字符,然后编辑了变量lastName
def nameFinder(rollCall, aName):
spaceCharacter = aName.index(" ")
firstName = aName[0:spaceCharacter]
lastName = aName[spaceCharacter:len(aName)+1]
if (firstName in rollCall) or (lastName in rollCall):
return True
else:
return False
rollCall = "Bobby Lee", "Margaret Me"
print(nameFinder(rollCall, "Bob Ce"))
对于这个功能,我必须找到第一个或最后一个名字是否在rollCall中。它不必是第一个也是最后一个,只有第一个或最后一个。例如,“Bob Ce”将导致False,因为“Bob”不在rollCall中。我怎样才能做到这一点,因为它会导致真实。
答案 0 :(得分:1)
从代码中删除(firstName in studentList) or
后,我将False
作为输出。
我相信您的if语句中的firstName in studentList
为True,因此True or False
会产生True
的输出
另请注意,您正在lastName in rollCall
语句中检查if
,代码lastName
为' Ce'
答案 1 :(得分:0)
您的版本已修改
基本上,我们拆分aName然后循环遍历rollCall,尝试匹配所有名称。如果匹配,请返回 true 。否则,请返回 false 。
def nameFinder(rollCall, aName):
studentName = aName.split(" ")
for name in rollCall:
rollCallName = name.split(" ")
if rollCallName[0] == studentName[0] or rollCallName[1] == studentName[1]:
return True
return False
rollCall = "Bobby Lee", "Margaret Me"
print(nameFinder(rollCall, "Bob Ce"))
占用较少行数的版本
以下代码首先将两个列表合并为First,Last,First2,Last2,然后将扫描输入的名称,如果至少有一个匹配,则返回true:
def nameFinder(rollCall, aName):
array_merged = [partName for fullname in rollCall for partName in fullname.split(" ")]
return any([checkingPartName in array_merged for checkingPartName in aName.split(" ")])
rollCall = ["Bobby Lee", "Margaret Me"]
print(nameFinder(rollCall, "Bob Ce"))
注意:由于我们正在检查列表中是否存在任何名称,因此我认为合并这两个列表会简化代码。但是,如果你只被给予[“Bobby Lee”,“Margaret Me”],那么这个功能就像魅力一样。