본문 바로가기
ABC 부트캠프

[6일차] ABC 부트캠프 python 기초_4

by ejis 2024. 7. 12.

 

어제보다는 복습을 해서 따라갈만 한 거 같아요. 여러분 복습은 필수입니당.. 집가면 꼭 쉬어도 되는데 복습을 해보아요.. 꼭...


/ 앞에는 위치,* 뒤에는 키워드가 들어와야 합니다.

입력값의 개수가 미정이라면

def sum(*nums) 처럼 변수 앞에 *을 붙이거나

def sum(nums) 후 sum([1, 2])처럼 리스트로 받으면됩니당

 

ex) 상기에 명시한거처럼 만약 def sum(a, b, /)해놓고 a = 1, b = 1로 전달하면 오류가 출력됩니다..


Python 표준 라이브러리

라이브러리 : 기능들의 집합

표준라이브러리 라이브러리’는 ‘도서관’이라는 뜻 그대로 원하는 정보를 찾아보는 곳이다. 모든 라이브러리를 다 알 필요는 없고 어떤 일을 할 때 어떤 라이브러리를 사용해야 한다는 정도만 알면 된다.

 

예약어는 변수명으로 사용이 불가능합니다. 하지만 여기서 import와 함께 사용할 수 있는 예외의 예약어가 있는데, [as, from] 이 해당합니다.

 

  • datetime : datetime.date는 연, 월, 일로 날짜를 표현할 때 사용하는 함수이다.
  • math : 수학연산 관련 기능, math.gcd(greatest common divisor)를 쉽게 구할 수 있다. (최대 공약수)
  • random : 난수
  • glob : 디렉토리 파일 리스트 조회

 

 

객체 지향 : 객체에 의한 프로그래밍을 말합니다.

파일 경로 : 절대 경로, 상대경로

                ./ 현재

                ../ 하나위 디텍토리

를 활용하여 경로를 찾아내면 좋을 거 같습니다!

 

또한 깨알 지식인데, 1과 같이 일반 정수를 print 하고 싶은데 정수형이라서 오류가 날 경우가 생길텐데요, 이때는 str을 사용하여 정수를 데이터 형으로 변경 시켜주면 숫자도 출력이 된답니다!


오늘은 연습문제로 야구게임을 만들었어요.

정말 이때도 복습중인 상태여서 그런지 만드는데 시간이 꽤 오래걸렸어요..(┬┬﹏┬┬)

더 열심히 해보겠습니다!

군대에서 훈련 끝나고 선임들과 할 거 없을때 종이로 야구게임 엄청 많이 했는데.. 추억이네요 하하

 

 

야구게임을 모르시는 분들을 위해 규칙 설명 나갑니다! (파이썬을 곁들인..)

 

import random

is_done = False

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

    # 섞어준다.
    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'

주석을 붙여 설명까지 붙여보았습니다 (*^_^*)

결과 출력 화면.


오늘은 야구게임을 만드는데, 시간을 충분하게 주셨습니다.

이 연습문제를 풀어보며 나중은 더 어려울텐데 어떡하지 라는 생각이 들기는 했지만,

차차 복습하는 시점에서 저 스스로 더 나아지고 있고,

파이썬은 껌이다 라고 생각 할 때까지 노력하겠습니다!

 

 

 

 

썸네일