首页 > 解决方案 > 如何检查用户输入是否在字符列表中具有相同的字符?

问题描述

我知道我的问题很模糊。我是 python 新手,我正在尝试编写一个程序,该程序基本上通过检查他们名字中的字符是否存在于“真爱”中来计算两个人之间的兼容性。

例如:

扎克·埃夫隆 艾玛·沃特森

检查用户提供的名称中是否存在“真爱”中的任何字母。然后将它们加起来并给出一个百分比。它将首先检查“TRUE”并给出一个数字“x”,然后为“LOVE”提供相同的数字并给出另一个数字“y”,然后将数字并排放置以形成一个整数 xy%。

我知道这仍然不清楚,但我没有什么可失去的。

这是我的代码,我知道它不好且有缺陷:

def fname(f):
   return [char for char in f]

def sname(s):
   return [char for char in s]


f = input("What is the first person's full name?: ").upper().replace(" ", "")
s = input("What is the second person's full name?: ").upper().replace(" ", "")

print("Hello, " + f + " and " + s + ".")

# Checking if whitespace is removed and made uppercase.

print(fname(f))
print(sname(s))

# listing the letters in True love

t = ["T", "R", "U", "E"]
l = ["L", "O", "V", "E"]
tl = t + l
print(tl)

我只想出了这么多,我被困在这里。

任何帮助将不胜感激,如果您对我正在尝试做的事情有任何疑问,请询问。

标签: pythonpython-3.x

解决方案


设置交叉点可能是一个不错的方法:

>>> true_love = set("True Love".lower())
>>> len(
...     (set(input("First name? ").lower()) 
...         | set(input("Second name? ").lower())
...     ) & true_love
... ) / len(true_love)
First name? Zac Efron
Second name? Emma Watson
0.625

这个想法是,由于您正在寻找共同的字母,因此您可以将每个字符串变成一个set字母。集合有一个内置的运算符,用于查找它们共有的元素数量(交集,即&运算符)。您构建包含两个名称的并集( |) 的集合,将其与“真爱”相交,然后比较这些集合的大小以获得百分比。


推荐阅读