파이썬 숫자 맞추기 게임(업다운 게임)
1. 내가 맞추는 업다운 게임
사실 이거는 구글링해보면 참고할 자료도 많고, random 모듈의 random.randrange()를 사용해서 범위내 무작위 숫자 하나만 받으면 어렵지 않게 구현할 수 있다.
# 업다운 게임
# 1 - 100 숫자 사이의 숫자에서 입력
# 내가 숫자 입력
# 컴퓨터가 UP, DOWN 판별
# 5회째 실패하면 실패 출력
import random
number = random.randrange(1, 101) # 1부터 100까지 사이에서 무작위 수 던지기
# print(number)
for cnt in range(5):
select_num = int(input("숫자를 입력하세요."))
if number == select_num:
print("성공")
break
if number > select_num:
print("UP")
elif number < select_num:
print("DOWN")
if cnt == 4:
if select_num == number:
print("성공")
else:
print("실패")
2. 내가 내고 컴퓨터가 맞추는 업다운 게임
이 문제는 참고할만한 자료도 없고, 지금까지 배운 내용으로는 구현하기 힘든 조건들도 많이 달려있었다. 결과적으로 혼자 힘으로 풀지 못했고, 여러 풀이들을 참고해서 다시한번 작성해봤다.
## 어렵다...
# 조건.
# 플레이어가 input 함수를 통해서 1~100 중 임의의 수(P)를 입력한다. (1~100 이외의 수를 입력할 경우, 다시 입력하도록 할 것)
# 컴퓨터는 플레이어가 정한 수(P)를 가장 빨리 맞힐 수 있도록 수(C)를 말한다. (randrange는 사용하지 말 것)
# 플레이어는 C와 P를 비교하여, 업 / 다운 중 하나를 입력한다.
# (직접 '업' 혹은 '다운'을 input 함수를 통해 입력하도록 할 것, 그 이외의 단어를 입력할 경우 다시 입력하도록 할 것, P가 C보다 더 큰데도 플레이어가 거짓말로 '다운'이라고 할 경우에도 다시 입력하도록 할 것)
P = int(input("숫자입력:"))
# 1. 플레이어가 input 함수를 통해서 1~100 중 임의의 수(P)를 입력한다.
# (1~100 이외의 수를 입력할 경우, 다시 입력하도록 할 것)
number = range(1, 101)
while P not in number: # P가 1과 100 사이에 없을 때 다시 입력.
print("다시 입력하세요.")
P = int(input("숫자입력:")) # P 입력을 다시 한다.
#####
while True:
C = number[(len(number) // 2) - 1] # 절반을 가른다.
print('컴퓨터 :', C)
if P == C:
print('성공')
break
answer = input("up or down:")
if P > C and answer == "up": # 내가 입력한 숫자가 컴퓨터 숫자보다 크면서 up이라고 대답했을 때,
number = number[number.index(C) + 1:]
# 슬라이싱으로 반을 가른다.
elif P < C and answer == "down": # 내가 입력한 숫자가 컴퓨터 숫자보다 작고 down이라고 대답했을 때,
number = number[:number.index(C) ]
else:
print('범위에서 벗어났습니다.') # 위의 두 교집합에서 벗어나는 경우.
조건문, 반복문, 함수의 내용을 더 공부해야겠다.
위의 풀이 외에 잘하시는 우리 팀원분의 풀이도 인상적이었는데, 리스트, 딕셔너리를 필요한 곳에 적절하게 잘 써서 작성했다. 처음에 자료구조를 잘 작성하고 시작하니 필요한 곳에서 꺼내 쓰기도 편하고, 코드가 말하듯이 흘러가서 설명을 하기에도, 듣는 입장에서도 편한 것 같다. 파이썬 기초를 더 닦자!
반응형
'파이썬 테스트 [Python]' 카테고리의 다른 글
파이썬 이차원 리스트 문제 (feat. reverse, reversed의 차이) (28) | 2022.01.20 |
---|---|
파이썬 tuple형태 반환 (feat. enumerate()) (36) | 2022.01.18 |
파이썬 주민등록번호 유효성 검사 (27) | 2022.01.07 |
파이썬 턴제(Turn-based Strategy) 게임 (4) | 2021.12.22 |
파이썬 베스킨라빈스 31게임 (12) | 2021.12.21 |
댓글