코드스테이츠(컴퓨터 공학 기본)(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))
Author And Source
이 문제에 관하여(코드스테이츠(컴퓨터 공학 기본)(Computer Science) Session 5 / Sprint 1(문제 해결 전략 작성(가위바위보))), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@oojjww1/코드스테이츠컴퓨터-공학-기본Computer-Science-Session-5-Sprint-1문제-해결-전략-작성가위바위보
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# 첫번째 풀이
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))
Author And Source
이 문제에 관하여(코드스테이츠(컴퓨터 공학 기본)(Computer Science) Session 5 / Sprint 1(문제 해결 전략 작성(가위바위보))), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oojjww1/코드스테이츠컴퓨터-공학-기본Computer-Science-Session-5-Sprint-1문제-해결-전략-작성가위바위보저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)