이번 포스팅에선 파이썬을 활용하여 1부터 99까지의 랜덤한 숫자를 10번 안에 찾는 게임을 만들어보자.
숫자 맞추기 게임 만들기
랜덤한 수 만들기
1에서 99까지 랜덤한 수를 만들어 보자. random 라이브러리를 활용해보자.
import random
num_random = random.randint(1, 99)
반복문 만들기
그 다음 10번 동안 문제를 내는 반복문을 만들어보자.
coin = 10
while coin:
coin-=1
print("남은 코인 개수: {}".format(coin))
조건문 만들기, 입력받기
coin = 10
num = 0
while coin:
coin -= 1
num = int(input("1~99 사이의 숫자를 맞춰보세요"))
if num == num_random:
print("축하합니다. {}이 정답입니다".format(num))
break
elif num > num_random:
print("{}보다 작습니다. 남은 코인: {}개".format(num, coin))
elif num < num_random:
print("{}보다 큽니다. 남은 코인: {}개".format(num, coin))
if num != num_random and coin==0:
print("코인이 다 떨어졌습니다. 숫자 맞추기 실패입니다")
input 함수로 사용자의 입력을 받아 정답과 비교하여, 정답을 맞히면 while문을 탈출하고 축하 메시지를 띄운다. 만약 정답이 아니면 힌트를 주고 남은 코인이 몇 개인지 알려준다. 반복문이 끝났는데, 정답이 아니면서 코인의 개수가 0개면 게임 실패를 알리는 메시지를 출력한다. 게임을 실행해보자.
#결과 출력
1~99 사이의 숫자를 맞춰보세요50
50보다 큽니다. 남은 코인: 9개
1~99 사이의 숫자를 맞춰보세요75
75보다 큽니다. 남은 코인: 8개
1~99 사이의 숫자를 맞춰보세요85
85보다 큽니다. 남은 코인: 7개
1~99 사이의 숫자를 맞춰보세요96
축하합니다. 96이 정답입니다
예외처리
만약 위의 입력값을 정수가 아닌 값을 입력하면 에러가 발생한다. input을 int로 캐스팅했기 때문이다.
이런 만약의 상황을 대비하여 입력값을 체크해주는 함수를 만들어보자.
def input_check(casting = int) -> int:
while True:
try:
var = input("정답은? ")
var = casting(var)
return var
break
except:
print("잘못된 입력입니다. 정수를 입력해주세요.")
continue
input_check 함수에서 사용자 입력값을 받아 int로 캐스팅할 수 없으면 except문으로 가서 에러 문구를 출력하고 다시 반복문을 돌려 인풋 값을 받는다.
이 게임은 한 번 시작하면 정답을 맞히거나 코인이 떨어지기 전까지 그만둘 수 없다. 만약 유저가 중간에 게임을 포기하고 싶을 때 exit을 입력한다면 게임을 끝낼 수 있게 만들어보자.
def input_check(casting = int) -> int:
while 1:
try:
var = input("정답은? ")
if var == "exit":
return "exit"
break
else:
var = casting(var)
return var
break
except:
print("잘못된 입력입니다. 정수를 입력해주세요.")
continue
위와 같이 if문을 추가하여 입력값이 exit이면 반복문을 종료하고 "exit"을 반환한다.
while coin:
num = input_check()
coin -= 1
if num == "exit":
print("게임을 포기하시다니 아쉽습니다.")
break
elif num == num_random:
print("축하합니다. {}이 정답입니다".format(num))
break
elif num > num_random:
print("{}보다 작습니다. 남은 코인: {}개".format(num, coin))
elif num < num_random:
print("{}보다 큽니다. 남은 코인: {}개".format(num, coin))
if num != num_random and coin==0:
print("코인이 다 떨어졌습니다. 숫자 맞추기 실패입니다")import random
그럼 input 함수를 사용하여 반복문도 다시 작성해보자. exit이 들어오면 게임 종료 문구를 띄우고 반복문을 탈출한다.
이제 전체 코드를 보자.
import random
import os
def input_check(casting = int) -> int:
while 1:
try:
var = input("정답은? ")
if var == "exit":
return "exit"
break
else:
var = casting(var)
return var
break
except:
print("잘못된 입력입니다. 정수를 입력해주세요.")
continue
os.system('cls')
num_random = random.randint(1,99)
coin = 10
print('*****************************************************')
print('숫자 맞추기 게임에 오신 걸 환영합니다!')
print('1~99 사이의 숫자를 맞춰보세요, 코인은 10개 드립니다.')
print('*****************************************************')
while coin:
num = input_check()
coin -= 1
if num == "exit":
print("게임을 포기하시다니 아쉽습니다.")
break
elif num == num_random:
print("축하합니다. {}이 정답입니다".format(num))
break
elif num > num_random:
print("{}보다 작습니다. 남은 코인: {}개".format(num, coin))
elif num < num_random:
print("{}보다 큽니다. 남은 코인: {}개".format(num, coin))
if num != num_random and coin==0:
print("코인이 다 떨어졌습니다. 숫자 맞추기 실패입니다")
os라이브러리의 system함수를 사용하면 프롬프트 창을 깨끗하게 사용할 수 있다. 그 후 게임을 시작하는 문구를 띄운 후 게임을 시작해보자.
*****************************************************
숫자 맞추기 게임에 오신 걸 환영합니다!
1~99 사이의 숫자를 맞춰보세요, 코인은 10개 드립니다.
*****************************************************
정답은? 123asda 잘못된 입력입니다. 정수를 입력해주세요.
정답은? 한글 잘못된 입력입니다. 정수를 입력해주세요.
정답은? 50
50보다 큽니다. 남은 코인: 9개
정답은? 75 75보다 큽니다. 남은 코인: 8개
정답은? 90 90보다 작습니다. 남은 코인:7개
정답은? exit
게임을 포기하시다니 아쉽습니다.
input 함수가 사용되는 것을 보려고 일부러 결과를 맞추지 않고 exit을 입력했다.
'파이썬 > 실전 프로그래밍' 카테고리의 다른 글
[파이썬]숫자 야구 게임 만들기 (0) | 2022.10.27 |
---|
댓글