目标是获取两个列表,看看是否有任何元素匹配,以及它们是否每次都添加1来计数。第一个列表是5个元素的列表,第二个列表是用户输入。它不起作用,我做错了什么?它必须使用函数来完成,请帮助。
userask = input("Enter a few numbers to try win the lotto: ")
def count_correct(list1,list2):
count = 0
for r in list2:
if list1 in list2:
count += 1
return count
答案 0 :(得分:1)
首先需要按空格分割数字(如您所愿)并转换为列表:
userask = input("Enter a few numbers to try win the lotto: ")
userlist = userask.split()
然后你可以使用像这样的集合来做到这一点:
result = len(set(list1) & set(userlist))
只会计算非重复的常用内容或修复您的for
循环,如下所示:
def count_correct(list1,list2):
count = 0
for r in list2:
if r in list1:
count += 1
return count
答案 1 :(得分:0)
要实施计数功能,您可以将sum
与generator expression一起使用。
def count_correct(list1, list2):
# each True in the generator expression is coerced to int value 1
return sum(i in list1 for i in list2)
注意,使用集将消除列表中的重复项(如果有),这将导致错误的结果。
要捕获您可以执行的输入列表:
userask = input("Enter a few numbers to try win the lotto (separated by spaces): ")
list1 = map(int, userask.split())
答案 2 :(得分:-2)
这里的代码不完整。但我认为这种改变应该对你有帮助。
请勿使用if list1 in list2:
,请使用if r in list2: