如何区分不同的名称?

2024-06-25 22:51:06 发布

您现在位置:Python中文网/ 问答频道 /正文

明白了!这与答案不同,但我在firstName中添加了一个空格字符,然后编辑了变量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”不在点名中。我怎样才能做到这一点,因为它总是导致真实的结果


Tags: 答案infalse编辑returnfirstname字符bob
2条回答

您的版本已修改

基本上,我们分割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”],那么这个函数将像一个符咒一样工作

从代码中删除(firstName in studentList) or后,我将False作为输出

我相信if语句中的firstName in studentList是真的,所以True or False的结果是True

还请注意,您正在检查lastName in rollCall语句中的if,代码中的lastName' Ce'

相关问题 更多 >