IT/프로그래밍

[파이썬] 파이썬 함수 문제 풀이 [패스트 캠퍼스 챌린지 10일차]

뜻밖의 행복 2022. 2. 2. 14:08
반응형

안녕하세요? 뜻밖의 행운입니다. 

10일차 뭔가 의미 있는 숫자 같습니다. ㅎ

이렇게 10일차 5번 하면 50일까지 문제 없이 잘 갈 수 있겠습니다.

 

 

설연휴에도 쉬지 않고 잠깐이라도 교육을 들으면서 이어가는 모습 아주 좋아요

 

오늘은 지금까지 배운 것들을 활용해서 

문제를 해결하는 것을 배웠습니다. 

 

그렇죠 주입으로 배워서는 완전히 자기 것으로 할 수 없습니다 .

일단 중간평가는 로또 번호 생성기 만들기였습니다.

 

 

 
 
 

 

로또 번호 생성기를 어떻게 만들어야 할까요?

우선 다음과 같은 조건들이 있어야 할 것입니다.

 

1. 1~45 까지의 숫자만을 생성한다. 

2. 1~45 까지 중 6개의 숫자를 뽑아야 한다.

3. 6개의 숫자는 서로 중복되어서는 안된다. 

 

이렇게 프로그래밍을 할 때 요건을 받고 그 요건을 만족하기 위한 조건들을 정리해서 

프로그램을 만들라고 하는데요 

어찌되었던 저 최종 기능을 구현하기 까지 여러가지 조합이 있을 수 있죠 

저는 저대로의 방법대로 풀어보겠습니다. 

 

우선 리스트를 사용해야 겠구요, 중복을 체크하기 위해 연산자 in, not in을 사용할 것입니다.

그리고 6개의 숫자를 반복 해서 뽑아야 하니까 반복

네 반복문을 사용할 것입니다. 

그리고 함수를 배웠으니 함수도 사용해야겠죠 

여기서 파이썬 강점이 나타나는데 이미 많은 사람들이 미리 여러 함수들을 만들어 놓았습니다. 

"바퀴를 새로 발명하지 말아라" 유명한 말이죠 

1~45 까지의 임의의 숫자를 생성하는 기능은 이미 파이썬 자체에 있어서 굳이 제가 또 개발할 필요는 없습니다.

random.randint() #이 함수를 사용하면 됩니다.

random 이라는 모듈에 randint 이라는 것을 사용할 것인데요 

이름도 randint 인것이 random + int 가 합쳐진것 같은 느낌적인 느낌이 딱 옵니다.

 

그래서 어떻게 만들었냐?

 

파이썬 로또 번호 생성기

import random #훌륭한 사람들이 먼저 만들어 놓은 기능들을 쓰기 위해서 random 모듈은 import 하는 것입니다.

def getRandomNumber(): # 함수에서 배웠죠 def 로 함수를 정의 하는 것입니다. 
	number = random.randint(1,45) #1~45 를 생성하는 기능을 굳이 또 개발하지 않고 이미 만들어진 것을 사용하겠습니다. 
	return number  # return 반환값이 있는 함수입니다. 1~45 까지 random 한 숫자를 생성하고 number에 그 값을 할당하는 것이네요

numbers = [] # 리스트 입니다. 여기에 로또 번호 6개를 저장할 것입니다. 

while True: # 몇 번을 반복해야 할지 모르니 while 문을 사용하겠습니다. 
    i = int(len(numbers)) # i는 numbers 리스트의 길이를 측정하는 것입니다. 로또 번호 6개가 들어가면 while 반복을 멈추기 위해 지정하였습니다.
    if i > 5: # 네 i 가 5를 초과하면 즉 6이 되면 더 이상 숫자를 뽑을 필요가 없으니 while 을 멈추는 break를 여기에 걸어 두겠습니다.
        break   
    num = getRandomNumber() # 1~45의 랜덤한 숫자를 1개 뽑고 그것을 num 이라는 변수에 저장하겠습니다.
    if num not in numbers: # 이것은 로또에서 중복되는 숫자가 나오면 안되서 랜덤한 숫자를 뽑았을 때 이미 저장된 리스트에 같은 숫자가 없을 때만 
        numbers.append(num) # numbers 리스트에 num을 추가하겠다는 뜻입니다. num이 추가 되면 numbers 리스트 길이가 늘어나서 결국에 if i > 5: 에서 멈추겠죠

numbers.sort() # 이것은 굳이 넣지 않아도 되는데 그냥 숫자를 정렬해서 뽑고 싶어서 넣었습니다.
for num2 in numbers: #for의 경우 몇 번을 반복할지 알고 있으니 사용했습니다.  
    print(num2, end=" ") #end를 하지 않으면 그냥 세로로 숫자가 6개 나올 것이고 배운것을 활용해 보고 싶어서 굳이 또 넣었습니다.

네 돌려 보면 잘 작동하는 것을 알 수 있습니다. 

이러한 예제를 많이 풀어서 실력을 늘려가는게 중요하다고 할 수 있죠 

오늘 강의는 새로운 것을 배우는 것이 아니라

지금까지 배운 내용을 확실히 내것으로 만들었는지 복습하는 과정이었다고 볼 수 있겠네요

 

 

반응형