loading
본문 바로가기
파이썬 테스트 [Python]

파이썬 숫자 맞추기 게임(업다운 게임)

by GSTGTS 2021. 12. 20.

파이썬 숫자 맞추기 게임(업다운 게임)

 

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('범위에서 벗어났습니다.') # 위의 두 교집합에서 벗어나는 경우.

조건문, 반복문, 함수의 내용을 더 공부해야겠다.

 

위의 풀이 외에 잘하시는 우리 팀원분의 풀이도 인상적이었는데, 리스트, 딕셔너리를 필요한 곳에 적절하게 잘 써서 작성했다. 처음에 자료구조를 잘 작성하고 시작하니 필요한 곳에서 꺼내 쓰기도 편하고, 코드가 말하듯이 흘러가서 설명을 하기에도, 듣는 입장에서도 편한 것 같다. 파이썬 기초를 더 닦자! 

반응형

댓글