티스토리 뷰

어제에 이어 오늘도 과제 문항을 완성시켜보았다 추가적으로 게임의 시행횟수를 넣는 코드와 최대 도전횟수를 넣어보았다

def number_game():
    random_number = random.randint(1, 100)
    max_attempts = 7
    attempts = 0

    while attempts < max_attempts:
        user_input = input("업 다운 게임 기회 7번 숫자를 입력하세요: ")

max_attempts = 7 로 최대 도전횟수를 정해준다  while문을 통해  attempts < max_attempts 을 추가하여 현재 시도한 횟수인 attempts가 최대 시도 횟수인 max_attempts보다 작은지를 비교하는 조건식을 만들고 해당  조건식은 현재 시도한 횟수가 최대 시도 횟수보다 작을 때 참(True)이 된다 따라서 게임이 종료되지 않고 최대 시도 횟수에 도달하지 않았을 때 이 조건이 참이 된다 처음에 attempts = 0을 아래에 써 넣지 않아서 게임을 시작하고 7회이상 시도하여 게임에서 패배시 저장되는 시행횟수가 7로 고정이 되어버렸다

 

이후

        attempts += 1

        if guess < random_number:
            print("업")
        elif guess > random_number:
            print("다운")
        else:
            print("정답입니다! 시도 횟수:", attempts)
            break
    else:
        print("입력횟수를 초과했습니다 게임오버")
        attempts = 0

    return attempts

else문을 추가해 시도횟수를 표기하는 함수를 넣고 7회이상 시도할시 게임오버가 되게 만들었다 return attempts 문장은 number_game() 함수에서 시도한 횟수를 호출한 곳으로 반환하기 위해 사용된다 attempts += 1현재 시도 횟수 변수인 attempts에 1을 더하는 연산이다 플레이어가 새로운 시도를 한 번 더 했음을 나타낸다

def main():
    best_score = float('inf')

    while True:
        attempts = number_game()
        if attempts < best_score:
            best_score = attempts
            print("최고기록 달성!: ", best_score)
        else:
            print("이전 최고 기록: ", best_score)

최고점수를 표기하기위해 float('inf')를 넣었다 이파이썬에서 무한대를 나타내는 특별한 값이다 'inf'는 '무한대(infinity)'를 의미하며 이 값은 파이썬에서 부동 소수점 형식의 최대값보다 큰 숫자를 나타낸다 그리고 게임의 재시도를 하기위한 함수를 추가했다

        number_re = input("다시 하시겠습니까? (y/n): ")
        if number_re.lower() != "y":
            print("게임을 종료합니다")
            break

우선 인풋에 들어간 y/n 문구를 입력할때 대소문자의 구분이 필요하다 따라서 .lower()추가하여 문자열을 모두 소문자로 변환하였다 " ! " 부정 연산자로 사용되며 논리 연산에서 사용될 때 특별한 의미를 갖는다 주로 "아니다", "부정"이라는 의미로 해석된다 따라서 != "y"는 "문자열이 "y"와 같지 않다"는 뜻이 된다 즉, 사용자가 "y"를 입력하지 않은 경우를 나타낸다

 

if __name__ == "__main__":

    main()

마지막으로 if 문의 시행할 함수를 수정하고 돌려봤다 

 

전체코드

더보기
import random


def check_int(s):
    if s.isdigit() is True:
        return int(s)
    elif s[0] in ('-', '+'):
        if s[1:].isdigit() is True:
            return int(s[1:])
    else:
        return False


def number_game():
    random_number = random.randint(1, 100)
    max_attempts = 7
    attempts = 0

    while attempts < max_attempts:
        user_input = input("업 다운 게임 기회 7번 숫자를 입력하세요: ")

        guess = check_int(user_input)

        if not guess:
            print("숫자를 입력해주세요")
            continue

        if guess < 1 or guess > 100:
            print("유효한 범위 내의 숫자를 입력하세요")
            continue

        attempts += 1

        if guess < random_number:
            print("업")
        elif guess > random_number:
            print("다운")
        else:
            print("정답입니다! 시도 횟수:", attempts)
            break
    else:
        print("입력횟수를 초과했습니다 게임오버")
        attempts = 0

    return attempts


def main():
    best_score = float('inf')

    while True:
        attempts = number_game()
        if attempts < best_score:
            best_score = attempts
            print("최고기록 달성!: ", best_score)
        else:
            print("이전 최고 기록: ", best_score)

        number_re = input("다시 하시겠습니까? (y/n): ")
        if number_re.lower() != "y":
            print("게임을 종료합니다")
            break


if __name__ == "__main__":

    main()

아직 해결하지 못한 부분들도 있다.. 소수나 음수를 읽히게 한다던가

 

  • 오늘의 회고 및 한주 정리

강의만 듣다 처음으로 문제풀이에 들어가게 되었다 기본적인 print로 아무것도 없는 빈페이지를 채우는것부터 시작해서 하나씩 써내려갔다 강의 코드스니펫에 살을 입히는 것으로 접근하며 그 이후에 구글링이나 질문을 통해 하나씩 추가해 나갔다 물론 아직도 내가 직접 생각해서 쓴 코드는 1할도 되지않는다 그래도 무언가 작동이 되고 의도대로 움직이는 모습을 차차 보고있으니 뿌듯해졌다 역시 강의를 보는것도 중요하지만 직접 고민하며 써내려가야 이해가 훨씬 쉬운것 같다 다음주엔 두번째 문항 이후 4번까지 쭉 풀어볼생각이다 약간의 자신감도 붙었다 2번같은 경우는 1번의 연장선이라 금방할거같기도 하다 이번주팀은 다음주에서도 이어진다 든든한 팀장님과 함께 다음주도 잘 마무리 할수 있을거같다

'내일배움캠프 개발자과정 > TIL' 카테고리의 다른 글

내일배움캠프 12일차 TIL  (2) 2024.02.28
내일배움캠프 10일차 TIL  (0) 2024.02.26
내일배움캠프 8일차 TIL  (0) 2024.02.22
내일배움캠프 7일차 TIL  (0) 2024.02.21
내일배움캠프 6일차 TIL  (0) 2024.02.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함