回答編集履歴

2

先ほど消去したソースコード再up

2020/05/14 06:56

投稿

Tiger_
Tiger_

スコア94

test CHANGED
@@ -1,8 +1,32 @@
1
1
  if a in c:では文字列とリストを比較しているので同じ数があっても分岐に入れません。
2
2
 
3
- あまりきれいコードではありませんがこんな感じで
3
+ setを使って判定する場合こうなります
4
4
 
5
5
 
6
+
7
+ ```python
8
+
9
+ winning_number = list(map(int, input().split()))
10
+
11
+ num_of_tikets = int(input())
12
+
13
+
14
+
15
+ for i in range(num_of_tikets):
16
+
17
+ lottery = list(map(int, input().split()))
18
+
19
+ #当選番号とくじの番号の積集合
20
+
21
+ hit_nums=set(winning_number) & set(lottery)
22
+
23
+ print(len(hit_nums))
24
+
25
+ ```
26
+
27
+
28
+
29
+ もし一人が複数枚同じくじを引く場合(1,1,2,2,3,3)のような場合はsetを使わず素直にforで回して判定したほうが良さげです。
6
30
 
7
31
  ```python
8
32
 

1

複数当たっていることもあるのでソース変更

2020/05/14 06:56

投稿

Tiger_
Tiger_

スコア94

test CHANGED
@@ -1,6 +1,6 @@
1
1
  if a in c:では文字列とリストを比較しているので同じ数があっても分岐に入れません。
2
2
 
3
- 書くとしたらこんな感じですかね
3
+ あまりきれいなコードではありませんがこんな感じです
4
4
 
5
5
 
6
6
 
@@ -14,12 +14,16 @@
14
14
 
15
15
  for i in range(num_of_tikets):
16
16
 
17
- lottery = list(map(int, input().split()))
17
+ lotteries = list(map(int, input().split()))
18
18
 
19
- #当選番号とくじの番号の積集合
19
+ hit_count=0
20
20
 
21
- hit_nums=set(winning_number) & set(lottery)
21
+ for lottery in lotteries:
22
22
 
23
+ if(lottery in winning_number):
24
+
25
+ hit_count+=1
26
+
23
- print(len(hit_nums))
27
+ print(hit_count)
24
28
 
25
29
  ```