코드스테이츠(컴퓨터 공학 기본)(Computer Science) Session 5 / Sprint 1(문제 해결 전략 작성(가위바위보))

1) 가위, 바위, 보 중 하나를 입력하세요(게임을 종료하려면 0을 입력하세요)

2) 가위를 입력하셨습니다.

3) 컴퓨터는 랜덤으로 바위를 선택되었습니다.

4) 컴퓨터가 이겼습니다.

5) 사용자가 0을 입력할 때까지 1~4 과정이 반복된다.

의사코드(pseudocode) 작성

print '가위바위보 중 하나를 입력하세요(0을 입력하면 게임을 종료합니다.)'

while True :
game_input = input '가위바위보 중 하나를 입력하세요(0을 입력하면 게임을 종료합니다.)'

if 입력된 game_input 변수와 1과 같다면
if game_input == computer_input 또한, 두 변수가 같다면
print '무승부' 출력
...

if game_input ==2
if game_input == computer_input
print '무승부'
...

if game_input ==3
if game_input == computer_input
print '무승부'
...

else if game_input==0:
print("게임종료")
break 여기서 중지하고 반복문에서 빠져나온다.

# 실제 실행되는 코드
import random
# 가위 : 1, 바위 : 2, 보 : 3, 게임종료 : 0

while True:

 # 유의사항 => 정수형 표기해줘야 함
 game_input = int(input("가위바위보 중 하나를 입력하세요(0을 입력하면 게임을 종료합니다.) : ")) 

 # case - 1
 #computer_input = random.randrange(1,3)    

 # case - 2
 test_input = [1,2,3]                       
 computer_input = int(random.choice(test_input))

 if game_input==1 : #가위
  if game_input == computer_input: 
   print('무승부')
  elif game_input - computer_input == -1:
   print('사용자 패')
  elif game_input - computer_input == -2:
   print('사용자 승')

 elif game_input == 2: #바위
  if game_input == computer_input:
   print('무승부')
  elif game_input - computer_input == 1:
   print('사용자 승')
  elif game_input - computer_input == -1:
   print('사용자 패')

 elif game_input == 3: #보
  if game_input == computer_input:
   print('무승부')
  elif game_input - computer_input == 2:
   print('사용자 패')
  elif game_input - computer_input == 1:
   print('사용자 승')
    
 elif game_input==0:
   print("게임종료")
   break
# 실제 실행되는 코드
import random
# 가위 : 1, 바위 : 2, 보 : 3, 게임종료 : 0

while True:

 # 유의사항 => 정수형 표기해줘야 함
 game_input = int(input("가위바위보 중 하나를 입력하세요(0을 입력하면 게임을 종료합니다.) : ")) 

 # case - 1
 #computer_input = random.randrange(1,3)    

 # case - 2
 test_input = [1,2,3]                       
 computer_input = int(random.choice(test_input))

 if game_input==1 : #가위
  if game_input == computer_input: 
   print('무승부')
  elif game_input - computer_input == -1:
   print('사용자 패')
  elif game_input - computer_input == -2:
   print('사용자 승')

 elif game_input == 2: #바위
  if game_input == computer_input:
   print('무승부')
  elif game_input - computer_input == 1:
   print('사용자 승')
  elif game_input - computer_input == -1:
   print('사용자 패')

 elif game_input == 3: #보
  if game_input == computer_input:
   print('무승부')
  elif game_input - computer_input == 2:
   print('사용자 패')
  elif game_input - computer_input == 1:
   print('사용자 승')
    
 elif game_input==0:
   print("게임종료")
   break
import random
def show_welcome_message():
    print(welcome_message)


def get_user_choice():
    ###[1] 가위   [2] 바위   [3] 보    [9] 게임종료###
    return choice_options[int(choice)]

def quit_game(사용자승, 무승부, 사용자패):
    print(quit_message)
    print("게임결과")
    print("-----")
    ### 사용자승 : ",(사용자승) + ", " +"무승부 : ",(무승부) + ", " +"사용자패 : ",(사용자패) ###


def compare_choices_and_get_result(user, computer):
    if user == computer:
        print("사용자 : ", user_choice, ", ", "컴퓨터 : ", computer_choice)
        return "무승부"
    elif (user == "바위" and computer == "가위") or (user == "보" and computer == "바위") or (user == "가위" and computer == "보"):
        print("사용자 : ", user_choice, ", ", "컴퓨터 : ", computer_choice)
        return "사용자승"
    else:
        print("사용자 : ", user_choice, ", ", "컴퓨터 : ", computer_choice)
        return "사용자패"


def display_result_message_and_update_score(result):
    if result == "무승부":
        print(tie_message)
        score["무승부"] += 1
    elif result == "사용자승":
        print(win_message)
        score["사용자승"] += 1
    else:
        print(loss_message)
        score["사용자패"] += 1

score =  {
    "사용자승": 0,
    "무승부": 0,
    "사용자패": 0
}

welcome_message = "가위바위보 게임을 시작합니다."
win_message = "사용자가 이겼습니다."
loss_message = "사용자가 졌습니다."
tie_message = "무승부입니다."
quit_message = "게임을 종료합니다."

choice_options = {
    1: "가위",
    2: "바위",
    3: "보",
    9: "게임종료"
}

### 게임시작 메시지
show_welcome_message()

### 첫번째 사용자 선택
user_choice = get_user_choice()

### 게임수행을 위한 반복문
while user_choice != "게임종료":
    computer_choice = choice_options[random.randint(1, 3)]
    result = compare_choices_and_get_result(user_choice, computer_choice)
    display_result_message_and_update_score(result)
    user_choice = get_user_choice()
print('')
quit_game(score["사용자승"], score["무승부"], score["사용자패"])

두가지 풀이 방법:

# 첫번째 풀이
import timeit
start_time = timeit.default_timer() # 시작 시간 체크


def solution(numbers):      #1. [2,1,3,4,1]
    answer = list()         #2. list create

    #print(answer)          # print를 활용한 중간값 확인을 통한 로직확인

    for i in range(len(numbers)):               #3. len ([2,1,3,4,1])
        for j in range(i+1, len(numbers)):      #4. len([2,1,3,4,1])
            if numbers[i] + numbers[j] not in answer:         #5. numbers[0] + numbers[1] not in answer
                answer.append(numbers[i] + numbers[j])        #6. answer.append(numbers[0]+numbers[1])
     
    #print(numbers[i],numbers[j])               # print를 활용한 중간값 확인을 통한 로직확인

    answer.sort()           #7. 리스트결과 정렬
    return answer

print(solution([2,1,3,4,1]))
end_time = timeit.default_timer()                  # 종료 시간 체크

print("%f 초 걸렸습니다." % (end_time - start_time))  # 코드실행시간 측정
# 두번째 풀이
start_time = timeit.default_timer() # 시작 시간 체크
def solution(numbers):
    answer = set()        # set 활용
    for i in range(len(numbers)):
        for j in range(i+1, len(numbers)):
            answer.add(numbers[i] + numbers[j])     # set의 add활용
            
    answer = list(answer)
    answer.sort()
    return answer

print(solution([2,1,3,4,1]))
end_time = timeit.default_timer() # 종료 시간 체크
print("%f 초 걸렸습니다." % (end_time - start_time)) 

좋은 웹페이지 즐겨찾기