list = ['JACOBIS','LIMANIS','FOXTROT']
word = input('enter a word in the list')
generatedword = (random.choice(list))
程序运行时可能的方案, 如果用户输入FOXTROT但单词是JACOBIS:
print("Your word contains 1/7 correct characters")
可能的解决方案:
if word == generatedword:
print ("your word contains 7/7 correct characters")
在这种情况下,操作是否合适?例如:
print ("your word contains", len(str(generatedword)), "/7")
或
print ("your word contains", len(str(word)) in generatedword, "/7")
答案 0 :(得分:2)
首先,in
不是函数,它是成员资格检查操作的运算符。
其次,您无法使用in
,因为您可能会有hello
这样的词和he
这样的词,而he
就在hello
但是字符的长度不一样。
相反,您可以使用set.intersection()
来查找常见字符:
>>> a = "FOXTROT"
>>> b = "JACOBIS"
>>> len(set(a).intersection(b))
1
但请注意,您需要将此值除以set(b)
的长度,以便处理具有重复字符的字词。
由于此方法将根据唯一字符给出计数,如果您希望获得2以下示例的交集,则可以使用str.count()
和sum()
函数,如下所示:
>>> a = 'FOXTROT'
>>>
>>> b = 'JACOBIS'
>>> sum(a.count(i) for i in set(b))
2
这将为您提供第一个字符串中第二个字符串中所有字符数的总和。