728x90
til..til....틸...틸....티아이엘....
오늘은 좀 정신이 집중이 안되네 ..
싶었는데.. 100시간 공부.. 오....
오늘 대충 시간표
시작 시간 ~ 종료 시간 | 교과명 |
09:00 ~ 13:00 | [실시간] 파이썬 문법 |
14:00 ~ 18:00 | [과제] 숫자 야구 만들기 |
19:00 ~ 21:00 | [실습] 실무적용 알고리즘 실습 |
Python 강의 3일차
- Python 언어의 이해
- Python 기초
- Python 활용
- 자료형 활용하기
- 자료형 변환
- 함수
- 다른 파일에 있는 코드 import해서 사용하기
- 값 비교하기
- 조건문
- ↑ 2일차 수업 끝
- ↓ 3일차 수업 시작
- 반복문
- while 혹은 for문을 사용해 반복문을 사용할 수 있습니다.
- for 문
- list, tuple, set 자료형의 요소들로 반복문을 사용 가능
- enumerate() 를 사용해 반복되는 요소가 몇번째인지 확인할 수 있다.
- dictionary 자료형의 key 혹은 value 로 반목문을 사용 가능
- range() 함수를 활용하여 원하는 만큼 반복문을 사용 가능
- continue 를 활용해 특정 상황에서 아무런 동작도 하지 않고 넘어갈 수 있다.
- break 를 활용해 특정 상황에 반복문을 중지
- while 문
- for 문과 크게 다르지 않지만, 조건을 다루는 방식에 차이가 있다.
- 대부분의 경우 while 문은 반복 할 횟수가 정해져 있지 않을 때 사용함
- 자주 사용되는 모듈 및 패턴
- type() # 값의 자료형 확인 해보기
- split() # string 을 list 로 변환하기
- join() # list 에서 string 로 변환하기
- replace() # 문자 바꾸기
- pprint() # 코드 예쁘게 출력하기
- random # 랜덤한 로직이 필요할 경우 사용
- time # 시간 다루기
- datetime # 날짜 다루기
- 지금까지 배운 문법들을 활용해 로또 번호를 뽑는 코드 작성하기
import random
lotto = set() # lotto 변수를 set 자료형으로 선언
def get_lotto_number(count):
result = []
if count < 1:
print("1 이상의 값을 입력해주세요")
for _ in range(count): # count만큼 반복해서 실행
lotto = set()
while len(lotto) < 6: # lotto의 요소 갯수가 8 이하일 경우 계속해서 반복
lotto.add(random.randint(1, 45)) # lotto에 1~45 사이의 랜덤 값을 입력
result.append(lotto)
return result
lotto_numbers = get_lotto_number(10)
print(lotto_numbers)
# result print
"""
[
{3, 4, 6, 9, 22, 26},
{5, 9, 11, 44, 45, 28},
{4, 39, 41, 16, 18, 27},
{5, 8, 9, 14, 20, 22},
{37, 6, 40, 41, 42, 19},
{1, 36, 8, 41, 9, 17},
{39, 41, 10, 12, 16, 23},
{35, 37, 11, 14, 17, 19},
{35, 3, 11, 43, 15, 16},
{36, 38, 6, 43, 24, 25}
]
"""
# 랜덤 값을 사용하기 때문에 코드를 실행할 때마다 결과는 달라집니다.
숫자 야구 만들기
문제)
숫자야구 게임 만들어보기
사용자의 입력을 받아 숫자야구 게임을 만들어주세요
요구조건
- 프로그램이 시작되면 슷자야구 게임을 몇 자리 숫자로 할 건지 입력 받아 주세요
- 3을 입력할 경우 해당 숫자야구 게임은 3자릿수로 진행, 최대 10자리
- 첫 번째 입력을 받은 자릿수 만큼 후 파이썬으로 중복 없는 랜덤한 수를 생성해 주세요
- 사용자가 숫자를 입력 했을 때 숫자야구 게임의 규칙에 맞게 ball / out count를 출력해 주세요
- 사용자가 정답을 맞춘 경우 아래 항목들을 출력해 주세요
- 사용자가 정답을 맞추기까지 입력 한 횟수
- 사용자가 게임을 시작해서 정답을 맞추기까지 소요된 시간
- 정답을 맞춘 시점의 날짜/시간
- 게임을 진행하던 도중, “exit”을 입력할 경우 프로그램을 종료해 주세요
코드 풀이) num_baseball.py (2022/09/07)
from datetime import datetime
import random, time, sys
# 사용자가 정답을 맞추기까지 입력 한 횟수
# 사용자가 게임을 시작해서 정답을 맞추기까지 소요된 시간
# 정답을 맞춘 시점의 날짜/시간
start_time = time.time()
end_time = 0
now = datetime.now()
str_date = datetime.strftime(now, "%y/%m/%d %H:%M")
num_list = []
check_list = []
strike = 0
ball = 0
exit_ = "exit"
def ball_count() :
ball = 0
for i in num_list :
for j in check_list :
if i == j :
ball += 1
ball = ball - strike_count()
return ball
def strike_count() :
strike = 0
for stk in num_list :
if stk in check_list :
if num_list.index(stk) == check_list.index(stk):
strike += 1
return strike
print("게임을 시작합니다.")
print("0 입력시 게임 종료")
N = int(input("숫자 입력 : "))
if N > 10 :
while True :
print("10 이하의 숫자를 입력하세요.")
N = int(input("숫자 입력 : "))
if N <= 10 and N != 0 :
break
elif N == 0 :
print("게임을 종료합니다.")
sys.exit(0)
else :
print("문제 생성 완료.")
numbers = set()
# 문제의 난수 생성
while len(numbers) < N :
numbers.add(random.randint(0, 9))
num_list = list(numbers)
random.shuffle(num_list)
# print(num_list) # 정답 유출
result = 0
print(num_list)
count = 1
while True :
print(f"{count}회차")
result = str(input(f"{N}개의 숫자 입력 : "))
check = map(int, result.split())
if result == exit_ :
print("게임을 종료합니다.")
sys.exit(0)
for i in check :
check_list.append(i)
print(f"{strike_count()}S {ball_count()}B")
if strike_count() == N :
print("OUT!")
print(num_list)
end_time = time.time()
print(f"소요된 시간 : {end_time-start_time:.1f}초")
print(str_date)
break
else :
check_list = []
strike = 0
ball = 0
count += 1
continue
아직 예외 처리가 부족한거 같다.
좀 더 업데이트해서 다시 해석이랑 같이 올려야지!
728x90
반응형