본문 바로가기

Til

Til 24.02.26 파이썬 개인과제 - 업다운게임

import random

def up_down_game():
    # 랜덤 숫자 생성을 위한 random 모듈
    random_number = random.randint(1, 100)
    attempts = 0


    while True:
        try:
            guess = int(input("숫자를 입력하세요: "))
            if guess < 1 or guess > 100:
                print("1부터 100 사이의 숫자를 입력하세요.")
                continue
        except ValueError:
            print("유효한 범위내 숫자를 입력하세요.")
            continue
        attempts += 1

        if guess < random_number:
            print("업!")
        elif guess > random_number:
            print("다운!")
        else:
            print(f"맞았습니다. 시도한 횟수: {attempts}")
            break
       
    while True:  # 게임을 다시 시작할지 묻는 루프
        play_again = input("다시 하시겠습니까? (y/n): ")
        if play_again.lower() == 'y':
            up_down_game()  # 게임 재시작
        elif play_again.lower() == 'n':
            print("게임을 종료합니다.")
            break
   
up_down_game()

 

각각 코드설명

  1. import random: random 모듈을 가져옵니다. 이 모듈은 무작위 숫자를 생성하는 데 사용됩니다.
  2. def up_down_game():: up_down_game이라는 함수를 정의합니다. 이 함수는 사용자에게 숫자를 맞추는 게임을 제공합니다.
  3. random_number = random.randint(1, 100): 1부터 100 사이의 무작위 숫자를 생성하여 random_number 변수에 할당합니다.
  4. attempts = 0: 사용자가 시도한 횟수를 저장하는 변수를 초기화합니다.
  5. while True:: 무한 루프를 시작합니다. 사용자가 게임을 종료할 때까지 계속됩니다.
  6. try:: 예외가 발생할 수 있는 코드 블록을 시작합니다.
  7. guess = int(input("숫자를 입력하세요: ")): 사용자로부터 숫자를 입력받습니다.
  8. if guess < 1 or guess > 100:: 사용자가 입력한 숫자가 1보다 작거나 100보다 큰지 확인합니다.
  9. print("1부터 100 사이의 숫자를 입력하세요."): 숫자가 범위를 벗어난 경우 해당 메시지를 출력합니다.
  10. except ValueError:: 값 에러가 발생한 경우를 처리합니다. 즉, 사용자가 숫자가 아닌 값을 입력했을 때 이 부분이 실행됩니다.
  11. print("유효한 범위내 숫자를 입력하세요."): 숫자가 아닌 값을 입력한 경우 해당 메시지를 출력합니다.
  12. continue: 루프의 처음으로 다시 돌아갑니다. 즉, 사용자로부터 올바른 입력을 받을 때까지 루프가 계속됩니다.
  13. attempts += 1: 사용자가 올바른 숫자를 입력한 경우, 시도 횟수를 증가시킵니다.
  14. if guess < random_number:: 사용자가 입력한 숫자가 무작위 숫자보다 작은지 확인합니다.
  15. print("업!"): 만약 숫자가 더 작다면 "업!"이라는 메시지를 출력합니다.
  16. elif guess > random_number:: 사용자가 입력한 숫자가 무작위 숫자보다 큰지 확인합니다.
  17. print("다운!"): 만약 숫자가 더 크다면 "다운!"이라는 메시지를 출력합니다.
  18. else:: 이전의 모든 경우가 아닌 경우 즉, 사용자가 무작위 숫자를 맞춘 경우입니다.
  19. print(f"맞았습니다. 시도한 횟수: {attempts}"): "맞았습니다."라는 메시지와 시도한 횟수를 출력합니다.
  20. break: 무한 루프를 종료합니다.
  21. while True:: 또 다른 무한 루프를 시작합니다. 이는 사용자가 게임을 다시 시작할지 여부를 묻기 위한 루프입니다.
  22. play_again = input("다시 하시겠습니까? (y/n): "): 사용자에게 게임을 다시 시작할지 묻습니다.
  23. if play_again.lower() == 'y':: 사용자가 'y'를 입력한 경우:
  24. up_down_game(): up_down_game 함수를 다시 호출하여 게임을 다시 시작합니다.
  25. elif play_again.lower() == 'n':: 사용자가 'n'을 입력한 경우:
  26. .lower(): 사용자가 입력한값을 소문자로 바꿔줍니다.
  27. print("게임을 종료합니다."): "게임을 종료합니다."라는 메시지를 출력합니다.
  28. break: 무한 루프를 종료합니다.
  29. up_down_game(): 함수를 호출하여 게임을 시작합니다.