본문 바로가기
개인숙제

첫번째 개인과제1,2번(파이썬)

by useSword 2024. 2. 22.

과제 기간이 일주일이기에 걱정과 기대가 반이었는데
막상 받으니 도파민이 나오며 정신 과제 2개 끝내고 차려보니 8시였다.

 

 

튜터님 = 김예린튜터님

1. 업앤다운 게임

  • 컴퓨터는 1부터 100 사이의 랜덤한 숫자를 생성합니다. V
  • 플레이어는 숫자를 입력하고, 입력한 숫자와 컴퓨터의 숫자를 비교하여 "업" 또는 "다운" 힌트를 제공합니다. V
  • 플레이어가 컴퓨터의 숫자를 정확히 맞히면 시도한 횟수를 알려줍니다. V
  • 플레이어가 숫자를 맞힐 때까지 위 과정을 반복합니다. V

추가 도전 과제:

  1. 플레이어가 입력한 숫자가 범위를 벗어날 경우, 적절한 안내 메시지를 출력하여 유효한 범위 내의 숫자를 입력하도록 유도하세요.(TODO)
  2. 플레이어가 게임을 반복하고 싶을 경우, 게임 재시작 여부를 묻고 그에 따라 게임을 초기화하거나 종료하는 기능을 추가하세요. V
  3. 게임이 종료될 때 플레이어의 최고 시도 횟수를 기록하고, 다음 게임에서 이를 표시하는 기능을 구현하세요. V

추가 도전 과제 1번 제외하고는 다 완성함. 추후에 더 수정해야할 것 같다.

 

개인적인 궁금증)

while이 2번 감싸져 있는 코드에 break를 2번 사용하여 탈출하고 싶었지만 안된다. 이 부분에 대해 튜터님이 알려주셨고 변수를 하나 만들어서 특정 조건을 주면 break가 일어나도록 만들면 된다고 알려주셨음.

flag가 그 변수이고 게임을 종료하는 부분에 break가 2번 들어가게됨.

flag가 실제로도 자주 사용하는 변수이기에 이름을 flag라고 지음

 

 

import random

flag = 0  # while보다 상단에 없으면 작동안함

while True:

    x = 0
    number = 0
    string = ""
    random_number = int(random.randint(1, 100))
    print("게임을 시작합니다")
    print("100 이하의 숫자를 입력하세요:")
    number = int(input())
    while x != number:
        if random_number > number:
            print("up")
            x += 1
            print("숫자를 입력하세요:")
            number = int(input())
        elif random_number < number:
            print("down")
            x += 1
            print("숫자를 입력하세요:")
            number = int(input())
        else:
            print("정답")
            print(f"시도한 횟수 {x}")
            print("다시 하시겠습니까? (y/n):")
            y = str(input())
            if y == 'y':
                print("다시시작합니다.")
                break
            else:
                print("게임을 종료합니다")
                flag = 1
                break

    # break 조건
    if (flag == 1):
        break

 

 

2. 가위바위보 게

    게임은 다음 순서로 진행됩니다.

  • 플레이어가 가위, 바위, 보 중 하나를 입력합니다.V
  • 컴퓨터도 무작위로 가위, 바위, 보 중 하나를 선택합니다.V
  • 플레이어와 컴퓨터의 선택을 비교하여 승패를 판정합니다.V
  • 결과를 출력하여 플레이어가 이겼는지, 컴퓨터가 이겼는지, 비겼는지를 알려줍니다.V
  • 게임을 반복하거나 종료할 수 있는 기능을 추가하세요.V

추가 도전 과제:

  1. 게임의 승, 패, 무승부 횟수를 기록하고, 게임 종료 시에 플레이어에게 통계를 제공하세요.V
  2. 플레이어가 입력할 때 대소문자를 구분하지 않도록 프로그램을 개선하세요.(TODO)
  3. 플레이어가 게임을 반복하고 싶을 경우, 게임 재시작 여부를 묻고 그에 따라 게임을 초기화하거나 종료하는 기능을 추가하세요. V

추가 도전과제 2번 뺴고 완성함. 추가적으로 수정해야할 것 같다.
원래는 continue 부분에 continue가 없어서 어색하게 작동되었다
튜터님에게 질문하니 continue만 넣으면 될 것 같다고 하셔서 넣었더니 완벽해졌다

continue 대한 경험이 부족하여 사용해야겠다는 생각을 못한 것 같다.

import random

RSP = ["바위", "가위", "보"]
y = ''  # 사용자 입력
win = 0  # 이긴 횟수
lose = 0
equals = 0

while True:
    pc = random.choice(RSP)
    print("가위, 바위, 보 중 하나를 선택하세요:")
    user = str(input())

    if user not in RSP:
        print("유효한 입력이 아닙니다")
        print(f"승:{win} 패:{lose} 무승부:{equals} ")
        continue  # 위로 올라감

    if user == pc:
        print(f"사용자:{user} 컴퓨터:{pc}")
        print("무승부")
        equals += 1
        print(f"승:{win} 패:{lose} 무승부:{equals} ")
        print("다시 하시겠습니까? (y/n):")
        y = str(input())
        if y != 'y':
            print("게임을 종료합니다")
            exit()
        else:
            print("다시시작합니다.")

    elif (user == '가위' and pc == '보') or (user == '바위' and pc == '가위') or (user == '보' and pc == '바위'):
        print(f"사용자:{user} 컴퓨터:{pc}")
        print("승리!")
        win += 1
        print(f"승:{win} 패:{lose} 무승부:{equals} ")
        print("다시 하시겠습니까? (y/n):")
        y = str(input())
        if y != 'y':
            print("게임을 종료합니다")
            exit()
        else:
            print("다시시작합니다.")

    else:
        print(f"사용자:{user} 컴퓨터:{pc}")
        print("패배...")
        lose += 1
        print(f"승:{win} 패:{lose} 무승부:{equals} ")
        print("다시 하시겠습니까? (y/n):")
        y = str(input())
        if y != 'y':
            print("게임을 종료합니다")
            exit()
        else:
            print("다시시작합니다.")

'개인숙제' 카테고리의 다른 글

개인숙제 추가수정  (4) 2024.03.01
개인 과제 완료  (0) 2024.02.28
react와 python을 사용하여 과제 3 ,4번 해결하기  (0) 2024.02.27