본문 바로가기

Til

Til 파이썬 개인과제 - 가위바위보 게임

import random

def rock_paper_scissors():
    # 컴퓨터의 선택 (랜덤이라는 모듈에서 초이스 함수 가져옴)
    computer_choice = random.choice(['가위', '바위', '보'])
    # 사용자의 승, 패, 무승부 횟수를 기록하기 위한 변수
    win = 0
    lose = 0
    draw = 0
   
    while True:        
        # 사용자 입력 받기
        user_choice = input("가위, 바위, 보 중 하나를 선택하세요: ")
       
        # 사용자가 유효한 입력을 했는지 확인
        if user_choice in ['가위', '바위', '보']:
                   
            # 사용자와 컴퓨터의 선택 출력
            print(f"사용자: {user_choice}, 컴퓨터: {computer_choice}")
           
            # 승부 결정
            if user_choice == computer_choice: #무승부출력
                print("무승부!")
                draw += 1
            elif (user_choice == '가위' and computer_choice == '보') or \
                (user_choice == '바위' and computer_choice == '가위') or \
                (user_choice == '보' and computer_choice == '바위'):
                print("사용자 승리!")
                win += 1 #사용자가 이겼을 경우
            else:
                print("컴퓨터 승리!")
                lose += 1 #나머지는 컴퓨터가 이기는경우로
           
            # 게임을 다시 시작할지 묻는 루프
            play_again = input("다시 하시겠습니까? (y/n): ")
            if play_again.lower() == 'y':
                rock_paper_scissors() #continue 로 대체해도되는것 같음
            elif play_again.lower() == 'n':
                print("게임을 종료합니다.")
                break
           
        else:
            print("유효한 입력이 아닙니다.")
            continue
    # 게임 통계 출력 - f string사용
    print(f"승: {win} 패: {lose} 무승부: {draw}")    
   
rock_paper_scissors()

 

코드설명

  1. import random: 랜덤한 값을 생성하기 위해 필요한 random 모듈을 가져옴
  2. def rock_paper_scissors():: rock_paper_scissors라는 함수를 정의 - 이 함수는게임을 실행하는 역할
  3. computer_choice = random.choice(['가위', '바위', '보']): 컴퓨터가 랜덤으로 '가위', '바위', '보' 중 하나를 선택하게함
  4. win, lose, draw 변수는 사용자의 승, 패, 무승부 횟수를 기록하기 위한 변수, 처음에는 모두 0으로 초기화
  5. while True:: 무한 루프 시작/ 사용자가 원할 때까지 게임을 계속
  6. user_choice = input("가위, 바위, 보 중 하나를 선택하세요: "): 사용자값을 입력받음
  7. if user_choice in ['가위', '바위', '보']:: 사용자가 유효한 입력을 했는지 확인합니다. 입력이 '가위', '바위', '보' 중 하나인지 검사합니다.
  8. print(f"사용자: {user_choice}, 컴퓨터: {computer_choice}"): 사용자와 컴퓨터의 선택을 출력
  9. 게임의 승패를 결정하고, 결과를 출력. 만약 사용자가 이기면 win 변수를 증가, 비기면 draw 변수를, 지면 lose 변수를 증가
  10. play_again = input("다시 하시겠습니까? (y/n): "): 사용자에게 게임을 다시 시작할지 물어봄
  11. if play_again.lower() == 'y':: 사용자가 'y'를 입력하면 다시 게임을 실행/ 재귀적으로 함수를 호출 ->게임을 다시 시작
  12. elif play_again.lower() == 'n':: 사용자가 'n'을 입력하면 게임을 종료, break문을 통해 무한 루프를 종료후 코드를 실행
  13. else:: 'y'나 'n' 이외의 입력이 들어온 경우/ 잘못된 입력임을 출력, 다시 입력을 받기 위해 continue를 사용하여 반복문의 처음으로 돌아감
  14. print(f"승: {win} 패: {lose} 무승부: {draw}"): 게임 통계를 출력/ 이 부분은 게임 종료(break) 후에만 실행
  15. rock_paper_scissors(): 마지막으로 함수를 호출
  16. 파이썬 조건식에서는 길이가 긴 식을 줄바꿈 할때는 \를 끝에 붙여줘야함