로또번호 생성기 따라하기 (Coding Lottery Number Generator)
이번에 할 코딩은 로또 번호 생성기입니다.
저는 간단히 Lottery.py로 파일을 만들었습니다.
우선 한국의 로또에 대해 간단히 설명하고 들어가 보겠습니다.
한국 로또번호는 1부터 45의 숫자까지 뽑을 수 있습니다.
그리고 한 게임에 뽑을 수 있는 숫자는 6개입니다.
뽑은 6개의 숫자는 절대 중복되지 않습니다.
6개 중에 하나가 보너스인데 이것은 굳이 신경 쓰지 않으셔도 됩니다.
import random
LotteryNumber = []
while len(LotteryNumber) < 6 :
V = random.randint(1,45)
if V not in LotteryNumber:
LotteryNumber.append(V)
print(LotteryNumber)
1행은 파이썬에서 랜덤 패키지를 읽어옵니다.
2행은 LotteryNumber라는 List를 만든 겁니다. [] 안에는 array 형식의 리스트가 들어갑니다.
3행의 len은 문자열 길이를 구할 때 사용합니다. 예를 들어 len('235')는 3이 출력되고 len('웹')은 1이 출력됩니다.
len은 리스트 타입에서도 동일하게 적용됩니다. 따라서 3행의 배열은 6보다 작으니 [a], [b], [c], [d], [e] 5개가 출력됩니다.
3행 맨 처음 while문은 조건이 참인 동안 코드를 계속 반복하라는 것을 의미합니다.
for문을 사용하면 중복된 숫자가 나올 수 있기 때문에 while문을 사용합니다.
4행은 1행에서 랜덤 패키지를 읽어온 것과 연결됩니다. 4행의 random.radint(x,y)는 x에서 y사이의 랜덤 한 정수를 반환합니다. 로또가 1부터 45까지라서, random.radint(1,45)로 설정합니다.
5행은 3행과 연결되어 중복되지 않는 6개 숫자가 뽑히게 됩니다.
[1]을 처음에 뽑는다면 이제 기존의 random.radint(1,45)에는 [1]이 없는 것이죠.
즉, V not in LotteryNumber가 되는 것입니다.
저는 이 부분이 굉장히 헷갈렸습니다.
6행의 append는 기존 리스트에 원소를 추가하는 기능을 가집니다.
예를 들어 [4]가 출력되고 다음에 [5]가 출력된다고 가정해봅시다.
4가 출력되고 다음 리스트가 append 되면 [4, 5]가 됩니다.
이런 방식으로 5번 while 반복하면 [4, 5, 6, 7, 8, 9] 5번 append 됩니다.
이는 3행에서 while len(LotteryNumber) < 6 이기 때문입니다.
즉, 첫 번호를 뽑은 후 5번 append 된다고 생각하면 쉽게 생각할 수 있습니다.
마지막행에서 그냥 출력하게 되면 6개의 번호가 마구잡이로 나오게 됩니다.
이 문제의 해결 방법은 간단합니다. LotteryNumber 앞에 Sorted를 붙여주면 됩니다.
Sorted는 정렬 메서드로 [] 안에 리스트를 정렬된 상태로 변경합니다.
print(sorted(LotteryNumber))로 만듭니다.
출력 시 오름차순으로 정렬된 6개의 랜덤 번호를 얻으실 수 있습니다.
그럼 VSCode의 TERMINAL에서 실행 보겠습니다.
TERMINAL에서 C:\Users\ATIV\Downloads\myworks>python .\lottery.py을 입력합니다.
C:\Users\ATIV\Downloads\myworks>python .\lottery.py
[17, 20, 31, 36, 42, 44]
C:\Users\ATIV\Downloads\myworks>python .\lottery.py
[8, 18, 20, 28, 32, 36]
C:\Users\ATIV\Downloads\myworks>python .\lottery.py
[16, 24, 25, 26, 40, 41]
C:\Users\ATIV\Downloads\myworks>python .\lottery.py
[1, 3, 5, 11, 14, 17]
아주 간단하고 명료하게 로또 번호 생성기를 따라 해 봤습니다.
이런 방식으로 실생활에서 적용해 볼 수 있는 프로그램을 하나씩 만들어보는 것도 좋은 공부방법이라고 생각합니다.
'코딩 따라하기' 카테고리의 다른 글
주사위 던지기 따라하기 (Coding Throwing Double Dice) (6) | 2020.11.20 |
---|---|
가위바위보 따라하기 (Coding rock-paper-scissors) (4) | 2020.11.19 |
패스워드 생성기 따라하기 (Coding Password Generator) (4) | 2020.11.18 |
윤년 판별기 따라하기 (Coding Leap Year Checker) (3) | 2020.11.16 |
구구단 따라하기(Coding 99steps) (4) | 2020.11.15 |
댓글