Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何检查用户输入的字符在字符列表中是否相同?_Python_Python 3.x - Fatal编程技术网

Python 如何检查用户输入的字符在字符列表中是否相同?

Python 如何检查用户输入的字符在字符列表中是否相同?,python,python-3.x,Python,Python 3.x,我知道我的问题很模糊。我是python新手,我正在尝试编写一个程序,通过检查两个人名字中的字符是否出现在“真爱”中来计算他们之间的兼容性 例如: 扎克·埃夫隆 艾玛·沃森 检查用户提供的姓名中是否有“真爱”字样。然后将它们相加并给出一个百分比。它将首先检查“真”并给出一个数字“x”,然后同样给出“爱”并给出另一个数字“y”,然后将数字并排放置,形成一个整数xy% 我知道现在还不清楚,但我没有什么可失去的 这是我的代码,我知道它是坏的和有缺陷的: def fname(f): return [

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

例如:

扎克·埃夫隆 艾玛·沃森

检查用户提供的姓名中是否有“真爱”字样。然后将它们相加并给出一个百分比。它将首先检查“真”并给出一个数字“x”,然后同样给出“爱”并给出另一个数字“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)
我只想到这么多,我被困在这里了


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

您的代码可以做一些改进,但您需要:

首先,您要计算输入的字母在
tl
中的数量

count=0
for x in f+s:
  if x in tl:
   count+=1

然后,使用3的简单规则: 您对
tl
中的所有字母都有100%的分数%算了吧

print((count * 100)/len(tl),'%')
除此之外,关于您的代码:

您可以使用
list(f)
list(s)
,而不是
fname
sname
函数;
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

其思想是,由于您正在寻找共同的字母,因此可以将每个字符串转换为一组字母。集合有一个内置运算符,用于查找它们共有的元素数(交点,即
&
运算符)。你建立一个集合,其中包含两个名字的并集(
|
),你将它与“真爱”相交,然后比较这些集合的大小以得到一个百分比。

具体来说,你“坚持”的是什么?缺陷是什么?嗨,谢谢你发布代码。正如斯科特·亨特所指出的,你需要非常具体。把问题分解成更小的问题。然后研究具体问题。你会惊讶于很多人都有类似的问题,所以我按照你的建议,对t和l都做了,因为我需要不同的数字来计算%。这不是真的乘以100,只是我把两个数字放在一起,形成一个新的数字。然而,我不知道如何把两者结合起来。计数1=0计数2=0对于f+s中的x:如果t中的x:计数1+=1如果l中的x:计数2+=1打印(计数1,计数2)我算出了!很高兴听到这个消息!
>>> 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