ABC 부트캠프 데이터 탐험가 4기

[6일차] ABC 부트캠프 : Jupyter Notebook 활용 및 Python 기초 (4)

marriina 2024. 7. 12. 00:39

1. Python 표준 라이브러리: Python 에 포함된 라이브러리로 유용한 기능

  • datetime - 날짜와 관련된 기능, 연, 월, 일로 날짜를 표현할 때 사용하는 함수
import datetime
day1 = datetime.date(2021, 12, 14)
day2 = datetime.date(2023, 4, 5)
diff = day2 - day1
print("datetime: ",diff.days)

 결과: 477
  • math - 수학연산 관련 기능
    • math.gcd: 최대 공약수(gcd, greatest common divisor)를 쉽게 구할 수 있음
    • math.lcm: 최소공배수( lcm, Lowest Common Multiple)를 쉽게 구할 수 있음
import math
print("mat_gcd: ",math.gcd(60, 100, 80))
mat_gcd:  20

print("math.lcm: ",math.lcm(15, 25))
math.lcm:  75
  • random - 난수생성
import random
random.random()
print("random: ",random.randint(1, 10))

random:  1
  • glob: 디렉토리 파일 리스트 조회
import glob
print("glob: ",glob.glob("./*.ipynb"))

glob:  ['.\\01_Python_기초_1-1 (3일차).ipynb', '.\\02_Python_기초_2(4 일차).ipynb', '.\\03_Python_기초_3(5일차).ipynb', '.\\03_Python_기초_3(풀이포함).ipynb', '.\\Answer_sheet_1 (1).ipynb', '.\\Ch02.ipynb', '.\\hrkwp (1).ipynb', '.\\hrkwp.ipynb', '.\\machine_Learning(1~4).ipynb', '.\\Untitled12.ipynb']

 

2. 파이썬 베이스볼 게임 만들기

import random

is_done = False  # 게임 종료 여부를 나타내는 플래그

while not is_done:
    numbers = [str(x) for x in range(0, 10)]  # 0부터 9까지의 숫자를 문자열로 변환하여 리스트에 저장

    # 숫자 리스트를 100번 섞어준다.
    for _ in range(100):
        idx = random.randint(0, 8)
        temp_num = numbers[idx]
        numbers[idx] = numbers[0]
        numbers[0] = temp_num

    # 섞인 리스트에서 앞의 3개 숫자를 정답으로 사용한다.
    answer = numbers[0:3]
    print(answer)  # 정답을 출력 (실제 게임에서는 숨기는 것이 좋습니다)

    is_incorrect = True

    while is_incorrect:
        s_cnt = 0  # 스트라이크 개수
        b_cnt = 0  # 볼 개수
        input_nums = input('숫자를 공백단위로 입력해주세요').split()
        input_idx = 0
        while input_idx < len(input_nums):
            input_num = input_nums[input_idx]
            if input_num in answer:
                answer_idx = answer.index(input_num)
                if input_idx == answer_idx:
                    s_cnt += 1  # 숫자와 위치가 모두 일치하면 스트라이크 증가
                else:
                    b_cnt += 1  # 숫자만 일치하면 볼 증가
            input_idx += 1

        is_incorrect = s_cnt != 3  # 스트라이크가 3개가 아니면 계속 입력 받음

        if is_incorrect:
            print(f"{s_cnt}스트라이크, {b_cnt}볼")  # 스트라이크와 볼 개수 출력

    is_done = input('3 스트라이크! 정답입니다! 게임을 다시 시작하시겠습니까? (Y/N)').upper() != 'Y'
    # 게임을 다시 시작할지 여부를 묻고, 'Y'가 아닌 경우 게임 종료



['8', '3', '4']
숫자를 공백단위로 입력해주세요 8
1스트라이크, 0볼
숫자를 공백단위로 입력해주세요 8 3 4
3 스트라이크! 정답입니다! 게임을 다시 시작하시겠습니까? (Y/N) y
['4', '7', '6']
숫자를 공백단위로 입력해주세요 4 7 6
3 스트라이크! 정답입니다! 게임을 다시 시작하시겠습니까? (Y/N) n