오늘은 파이썬 기본 강의 3일차이다.
오늘은 반복문을 배웠는데 반복문은 whlie 혹은 for문을 이용해 사용할 수 있다.
그리고 자주 사용되는 모듈 및 패턴을 배워보았다.
type(), split(), join(), replace(), pprint(), random, time, datetime 등이 있다.
일단 random 부터 살펴보면
# 난수 생성, 임의의 번호 생성 등 랜덤한 동작이 필요할 때 사용된다.
import random
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
random.shuffle(numbers) # numbers를 무작위하게 섞기
print(numbers) # [2, 8, 6, 4, 3, 7, 1, 5]
random_number = random.randint(1, 10) # 1 ~ 10 사이의 무작위 번호 생성
print(random_number) # 4
random라이브러리를 import하여 랜덤으로 숫자를 뽑는 기능이다.
# 함수의 실행 시간을 측정하는 등 시간을 다룰 때 사용되는 모듈이다.
import time
start_time = time.time() # 현재 시간 저장
time.sleep(1) # 1초간 대기
end_time = time.time()
# 코드가 종료된 시간 - 코드가 시작된 시간으로 실행 시간 구하기 (단위 : 초)
print(f"코드 실행 시간 : {end_time-start_time:.5f}") # 코드 실행 시간 : 1.00100
다음은 프로그램 시작 시간부터 프로그램이 종료되는 시간까지 시간을 측정해주는 time 모듈이다.
오늘 배운 것들을 사용해서 간단한 숫자야구 프로그램을 제작해보았다.
먼저 요구조건은
- 프로그램이 시작되면 슷자야구 게임을 몇 자리 숫자로 할 건지 입력 받아 주세요
- 3을 입력할 경우 해당 숫자야구 게임은 3자릿수로 진행, 최대 10자리
- 첫 번째 입력을 받은 자릿수 만큼 후 파이썬으로 중복 없는 랜덤한 수를 생성해 주세요
- 사용자가 숫자를 입력 했을 때 숫자야구 게임의 규칙에 맞게 ball / out count를 출력해 주세요
- 사용자가 정답을 맞춘 경우 아래 항목들을 출력해 주세요
- 사용자가 정답을 맞추기까지 입력 한 횟수
- 사용자가 게임을 시작해서 정답을 맞추기까지 소요된 시간
- 정답을 맞춘 시점의 날짜/시간
- 게임을 진행하던 도중, “exit”을 입력할 경우 프로그램을 종료해 주세요
from random import randint
from datetime import datetime
import time
print("게임의 자리수를 설정합니다")
n = int(input()) #자리수 설정
# 랜덤하게 입력되는 3자리수
numbers = []
print("0과 9 사이의 서로 다른 숫자를 설정한 자리수 만큼 랜덤한 순서로 뽑았습니다.")
while len(numbers) < n:
new_numbers = randint(0,9)
if new_numbers in numbers:
new_numbers = randint(0, 9)
numbers.append(new_numbers)
print(numbers)
# 사용자가 값을 정확하게 맞출때까지 무한반복
start = time.time()
count = 0
while True:
# 사용자가 입력하는 3자리수
user = []
print("숫자를 하나씩 차례대로 입력하세요.")
while len(user) < n:
# try:
user_input = input()
if user_input == "exit":
print("프로그램을 종료합니다")
quit()
user_numbers = int(user_input)
if user_numbers in user:
print("중복되는 수 입니다. 다시 입력해주세요.")
elif user_numbers > 9:
print("범위를 벗어나는 수입니다.다시 입력해주세요.")
user.append(user_numbers)
print(user)
i = 0
s = 0
b = 0
o = 0
while i < len(numbers):
if numbers[i] == user[i]:
s = s + 1
elif user[i] in numbers:
b = b + 1
else:
o = o + 1
i += 1
print("%d Strike %d Ball %d Out \n" % (s, b, o))
count += 1
if s == n:
print("축하합니다. %d번만에 세 숫자의 갑과 위치를 모두 맞추셨습니다." % count)
break
end = time.time()
print(f"게임 시작 후 걸린 시간: {end-start:.2f} 초")
print( f"게임 종료 시간: {datetime.now()}")
이렇게 구성해 보았다.
잘 작동한다.
살짝 어려운 과제였지만 구글링과 팀원들의 도움을 받아서 어렵지 않게 완성할 수 있었다.
'TTL > 1주차 ~ 4주차 TIL (8.29 ~ 9.23)' 카테고리의 다른 글
2022-09-13 TIL (0) | 2022.09.14 |
---|---|
2022-09-08 TIL (0) | 2022.09.12 |
2022-09-06 TIL (0) | 2022.09.06 |
2022-09-05 TIL (0) | 2022.09.05 |
2022-09-02 TIL (0) | 2022.09.04 |