【问题标题】:Function that finds duplicate names by inputting a name list通过输入名称列表查找重复名称的功能
【发布时间】:2020-07-06 07:00:34
【问题描述】:

各位,我是 Python 新手。 我想创建在列表中找到重复名称的方法。所以,我创建了它,但它没有按我想要的方式工作。

这是我的代码

def find_same_name(name) :
    result = set()
    for i in range(0 , len(name) - 1) :
        for j in range(i + 1, len(name)) :
            if name[i] == name[j] :
                result.add(name[i])
    return result
name = input("Please Write Name ")
print(name)
#print(type(name))
print(find_same_name(name))

这是我的结果

请写出汤姆·杰里的名字 Mike Tom Kim 汤姆杰瑞迈克汤姆金 {'T', 'o', '', 'e', 'r', 'i', 'm'}

为什么它打印为类型字符?我不知道出了什么问题。请大家帮帮我好吗?

【问题讨论】:

  • 您对这里的期望是什么:您是想以某种方式保留输入名称还是只需要工作一次?
  • 您需要将一个列表传递给 find_same_name(name)。但是你正在传递一个字符串。你可以像 print(find_same_name(name.split(" "))) 一样调用 find_same_name。
  • .split() 可能是您想要的。

标签: python arrays input


【解决方案1】:

原因是您要遍历列表中的每个字母,而不是每个名称。要遍历每个名​​称,您可以使用 .split() 函数,该函数根据(默认情况下)空格将字符串拆分为列表。

def find_same_name(name) :
    allnames = name.split()
    result = set()
    for i in range(0 , len(allnames) - 1) :
        for j in range(i + 1, len(name)) :
            if allnames[i] == allnames[j] :
                result.add(name[i])
    return result

name = input("Please Write Names: ")
print(name)
print(find_same_name(name))

【讨论】:

    【解决方案2】:
    name = input("Please Write Name ").split(' ')
    

    这是你犯的一个简单的错误。 您将名称用作字符串而不是名称列表。使用 'split' 将给定名称放入列表并应用函数

    【讨论】:

      【解决方案3】:

      name = input("Please Write Name ")

      这一行将name 分配为字符串。因此,当您在函数中执行name[i] 时,它会返回一个字母。

      要解决这个问题,请将name 分配为列表: name = input("Please Write Name ").split()

      split() 方法将具有单独名称的字符串转换为记录所有单独名称的列表,因此您可以使用name[i] 来获取名称。

      【讨论】:

        【解决方案4】:

        您好,欢迎来到 stackoverflow。

        您的问题是,您想将名称列表移交给您的方法,但您目前正在移交一个字符串“Tom Jerry Mike Tom Kim Tom Jerry Mike Tom Kim”。如果你这样做,python 将使用字符串而不是单词访问单个字母。我想,您想将输入拆分为空格,可以通过以下方式完成:

        name = input("Please Write Name ")
        name_list = name.split(" ")
        print(name_list)
        print(type(name))  # will be list now, not str
        print(find_same_name(name_list))
        

        【讨论】:

          猜你喜欢
          • 2018-09-22
          • 2015-02-13
          • 1970-01-01
          • 2013-06-14
          • 1970-01-01
          • 2011-07-11
          • 2022-09-30
          • 2021-02-23
          • 1970-01-01
          相关资源
          最近更新 更多