def count_matching_numbers(numbers, winning_numbers):
# 지난 과제의 코드를 붙여 넣으세요.
# 코드를 작성하세요.
count = 0
for number_1 in numbers:
for number_2 in winning_numbers:
if number_1 == number_2:
count += 1
return count
def check(numbers, winning_numbers):
# 코드를 작성하세요.
if(count_matching_numbers(numbers, winning_numbers)==6 and winning_numbers[6] not in numbers[0:]):
return 1000000000
elif(count_matching_numbers(numbers, winning_numbers)==6 and winning_numbers[6] in numbers[0:]):
return 50000000
elif(count_matching_numbers(numbers, winning_numbers)==5):
return 1000000
elif(count_matching_numbers(numbers, winning_numbers)==4):
return 50000
elif(count_matching_numbers(numbers, winning_numbers)==3):
return 5000
else:
return "꽝입니다"
# 테스트
print(check([2, 4, 11, 14, 25, 40], [4, 12, 14, 28, 40, 41, 6]))
print(check([2, 4, 11, 14, 25, 40], [2, 4, 10, 11, 14, 40, 25]))
일단 문제를 풀기는 했는데... 코드가 길어서 처리가 좀 느렸다 그래서 모범답안을 참고하려고 한다.
내 코드의 경우에는 겹치는 갯수 및 겹치지만 보너스 번호와 겹치는지 안겹치는지를 따져가면서 조건을 걸었다. 그래서 해당 코드가 좀 길어진 것 같다.
def check(numbers, winning_numbers):
count = count_matching_numbers(numbers, winning_numbers[:6])
bonus_count = count_matching_numbers(numbers, winning_numbers[6:])
if count == 6:
return 1000000000
elif count == 5 and bonus_count == 1:
return 50000000
elif count == 5:
return 1000000
elif count == 4:
return 50000
elif count == 3:
return 5000
else:
return 0
사실 변수를 지정해야 한다는 것을 알고 있었는데 어떻게 지정해야할 지 감이 안잡혔다. 이를 모범답안으로 부터 해결을 했는데, count 변수의 경우에는 일단 총 겹치는 갯수인거 같고, bonus_count 변수의 경우에는 보너스번호와 겹치는 갯수로 파악된다.
이를 변수로 삼아서 코드가 짧아진 것 같고, 조건문의 방식은 내꺼랑 비슷했다. 다만 변수의 처리가 굉장히 깔끔해서 역시 모범 답안인 것 같다.
from random import randint
def generate_numbers(n):
numbers = []
while len(numbers) < n:
new_number = randint(1, 45)
if new_number not in numbers:
numbers.append(new_number)
return numbers
def draw_winning_numbers():
winning_numbers = generate_numbers(7)
return sorted(winning_numbers[:6]) + winning_numbers[6:]
def count_matching_numbers(numbers, winning_numbers):
count = 0
for num in numbers:
if num in winning_numbers:
count = count + 1
return count
def check(numbers, winning_numbers):
count = count_matching_numbers(numbers, winning_numbers[:6])
bonus_count = count_matching_numbers(numbers, winning_numbers[6:])
if count == 6:
return 1000000000
elif count == 5 and bonus_count == 1:
return 50000000
elif count == 5:
return 1000000
elif count == 4:
return 50000
elif count == 3:
return 5000
else:
return 0