python - 如何检查用户输入是否在字符列表中具有相同的字符?
问题描述
我知道我的问题很模糊。我是 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)
我只想出了这么多,我被困在这里。
任何帮助将不胜感激,如果您对我正在尝试做的事情有任何疑问,请询问。
解决方案
设置交叉点可能是一个不错的方法:
>>> 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
字母。集合有一个内置的运算符,用于查找它们共有的元素数量(交集,即&
运算符)。您构建包含两个名称的并集( |
) 的集合,将其与“真爱”相交,然后比较这些集合的大小以获得百分比。
推荐阅读
- vulkan - 为什么 Vulkan 中的栅栏状态检查和重置如此缓慢?
- reactjs - Apollo 客户端重新获取非活动查询
- html - 为什么 css 中的 background-image 属性不起作用?
- php - 通过使用 php 比较 id 从另一个表中获取数据
- javascript - 如果它们是嵌套的,则无法设置 formik 错误
- unit-testing - 如何模拟querydsl查询?
- r - 如何使用 R 提高读取带有重复标签的 xml 的速度
- postgresql - 无法将触发器从 Oracle 转换为 PostgreSQL
- javascript - Google Maps JavaScript API Direction Renderer 未显示替代路线
- c# - 如何在 DataGridTemplateColumn 内的控件上双向绑定属性?