2016-09-18 11 views
-3

2つのリストを取得し、一致する要素があるかどうかを確認し、毎回カウントするために1を加算するかどうかを確認します。最初のリストは5つの要素のリストで、2番目のリストはユーザー入力です。それはうまくいかず、何が間違っているのですか?それは助けてください機能を使用して行われる必要があります。関数を使用して共通要素をチェックするPython関数

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

私はあなたのいくつかのコードが欠落していると確信しています。ヒント:項目から 'set'オブジェクトを作成し、それらの共通部分を得るためにそれらの交差を使用してください。 –

+0

関数を使うのに必要なこの質問にそれらを使用することは許されていません。 –

答えて

-2

ここでコードは不完全です。しかし、私はこの変更があなたを助けるはずだと思います。

if list1 in list2:を使用あなたは(あなたが望むように)スペースで数字を分割する最初の必要性if r in list2:

+0

私はそれを試してもカウントはdoesnt増加しかしカウント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 
0

あなたのカウント機能を実装するには、generator expressionsumを使用することができます。

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()) 
関連する問題