문제]
게임어와 컴퓨터가 카드게임을 하려고 한다. 게임의 규칙은 아래와 같다.
1. 카드를 받을 숫자를 입력하면
2. 컴퓨터는 입력한 숫자 만큼 무작위로 카드를 발생하여 그중 큰 수를 갖는다.
3. 게임어에게는 입력한 숫자 만큼의 카드를 무작위로 발생하여 보여준다.
4. 게임어는 그중 카드를 선택한다.
5. 컴퓨터와 게임어의 숫자를 비교하여 큰 수를 갖은 쪽이 이기는 게임이다.
6. 동점일 경우 다시 할 수 있도록 한다.
7. 카드는 1~5장까지 받을 수 있다.
8. 카드의 수는 1~9까지로 한다.
입출력예시 1]
카드 몇 장 받겠습니까? 2
게임어의 카드 입니다. 번호를 선택하여 주세요.
[1(6), 2(8)]
선택번호 : 2
게임어 수 : 8
컴퓨터 수 : 8
승부를 내지 못하였습니다. 다시하도록 합니다.
카드 몇 장 받겠습니까? 2
게임어의 카드 입니다. 번호를 선택하여 주세요.
[1(6), 2(9)]
선택번호 : 2
게임어 수 : 9
컴퓨터 수 : 8
축하합니다.
게임어가 승리하였습니다.
입출력예시 2]
카드 몇 장 받겠습니까? 7
카드는 최대 5장까지 받을 수 있습니다.
다시 입력하세요.
카드 몇 장 받겠습니까? 3
게임어의 카드 입니다. 번호를 선택하여 주세요.
[1(6), 2(8), 3(3)]
선택번호 : 2
게임어 수 : 8
컴퓨터 수 : 9
아쉽습니다.
컴퓨터가 승리하였습니다.
참고풀이]
import random
while True:
while True:
#카드받을 숫자를 입력한다.
N=int(input("카드 몇 장 받겠습니까? "))
if 1<= N <=5: break
print("카드는 최대 5장까지 받을 수 있습니다.")
print("다시 입력하세요.")
#컴퓨터의 카드 번호를 발생한다.
Com=random.randint(1,9)
for i in range(N-1):
Su=random.randint(1,9)
if Com<Su:
Com=Su
#게임어의 수를 발생한다.
nList=[]
for i in range(N):
nList.append(random.randint(1,9))
#게임어가 수를 선택하도록 한다.
print("게임어의 카드 입니다. 번호를 선택하여 주세요.")
print("[",end="")
for i in range(N-1):
print("%d(%d), "%(i+1,nList[i]), end="")
print("%d(%d)] "%(N,nList[N-1]), end="")
Su=int(input("선택번호 : "))
Player=nList[Su-1]
#게임어와 컴퓨터 수를 비교한다.
print("\n게임어 수 : %d"%Player)
print("컴퓨터 수 : %d\n"%Com)
if Player>Com:
print("축하합니다.")
print("게임어가 승리하였습니다.")
break
elif Com>Player:
print("아쉽습니다.")
print("컴퓨터가 승리하였습니다.")
break
else:
print("승부를 내지 못하였습니다.", end="")
print("다시하도록 합니다.")
출처 ] 사이버외교사절단 반크
참고풀이 결과]
대한민국의 아름다운 영토, 독도의 겨울
'프로그램 > Python 1000제' 카테고리의 다른 글
Python 17제] 2021년 한국정보올림피아드 1차대회 초등부 2. 나누기 (0) | 2021.08.19 |
---|---|
Python 16제] 2021년 한국정보올림피아드 1차대회 초등부 1. 지우개 (0) | 2021.08.11 |
Python 14제] 조건에 맞는 리스트값을 출력하는 프로그램을 작성하시오. (0) | 2021.08.05 |
Python 13제] 7의배수와 3의 배수를 찾아 출력하는 프로그램을 작성하시오. (0) | 2021.08.04 |
Python 12제] 2019년 한국정보올림피아드 1차대회 초등부 2번 - 회문 (0) | 2021.08.03 |
댓글