Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- django
- 아티클 스터디
- nginx
- JWT
- CS
- 쿠키(cookie)
- 장고
- web
- 파이썬
- 자료구조
- 세션(Session)
- git
- docker
- NoSQL
- flask
- 코딩테스트
- redis
- 개발공부
- Til
- 연습
- SQL
- ERD
- 티스토리챌린지
- github
- 오블완
- Python
- viewsets
- Wil
- 도커
- Doker
Archives
- Today
- Total
SteadyDrills
[TIL] 과제1 UP_DOWN 게임 만들기 본문
20240702
규칙)
- 컴퓨터가 정하는 랜덤숫자 (1-100)중 하나를 유저가 맞춘다.
- 숫자를 입력하면 '업' 또는 '다운' 힌트가 나온다
- 유저가 숫자를 맞추면 최고기록, 시도한 횟수와 재시작 여부를 묻는다.
최종 코드
import random
random_num = random.randint(1, 100)
print("up-down 게임을 시작합니다.")
print("수의 범위는 1-100 입니다.")
count = 0
score = []
# 최고 점수 반환
def high_score(scores):
return min(scores)
while True:
num = input("숫자를 입력하세요: ")
# 문자열 데이터를 입력할 경우 에러 방지
try:
num_user = int(num)
except ValueError:
print("숫자가 아닙니다.")
continue
# 범위 안의 숫자를 쓰게 유도
if 0 > num_user or 100 < num_user:
print("1-100 까지의 숫자 중 입력하세요")
continue
elif 0 < num_user < 101:
if num_user < random_num:
print("UP!")
count += 1
continue
elif num_user > random_num:
print("Down!")
count += 1
continue
# 정답을 맞춘 뒤 다시 시작을 질문
elif num_user == random_num:
score.append(count+1)
print(f"축합니다. 정답입니다! {count+1}번 만에 맞추셨습니다!! ")
print(f" 최고 기록은 {high_score(score)} 입니다.")
restart = input("다시 시작 하시겠습니까?(y/n): ").lower()
count = 0
if restart == "n":
break
elif restart == "y":
random_num = random.randint(1, 100)
continue
else:
print(f"다시 선택해 주세요")
restart = input("다시 시작 하시겠습니까?(y/n): ").lower()
if restart == "n":
break
elif restart == "y":
random_num = random.randint(1, 100)
continue
else:
print("게임을 종료하겠습니다")
break
위 코드를 짜면서 어려웠던 부분은 두 가지 부분이었다.
첫 번째는 최고기록을 표시하는 것이었다. 리스트를 사용해서 기록을 모으기는 했는데, 단순히 list값을 꺼내는 게 아니라 생각보다 어려웠다. 그중에 최단기록을 표시하기 위해 함수 high_score를 사용했다. 처음에는 min 함수가 정수의 값만 사용할 수 있는 줄 알았지만, 확인해 보니 문자열, 리스트, 딕셔너리 등 거의 모든 데이터 형태를 사용할 수 있다는 걸 알았다.
그래서 함수를 사용할 때에는 그 함수가 정확히 어떤 데이터 값을 요구하는지 혹은 처리할 수 있는지 확인하는 버릇을 길러야겠다는 생각이 들었다.
두 번째는 루프 처음에 숫자가 아닌 문자열 정보가 들어갔을 때 에러였다. 사실 이 부분은 과제 기준에는 없었지만 그래도 오류가 발생할 지점을 알기 때문에 고치는 게 맞다고 생각했다. 처음에는 이 부분을 어떻게 처리하면 좋을지 생각하다가 다행히 심화 강의에 나온 try / except 문법을 사용해 에러가 발생했을 때 처리하도록 했다,
과제지만 처음으로 조금 코딩을 해본 느낌이라 새로웠다. 같은 함수라도 위치 하나에 오류가 생기고 원하는 방향대로 진행되지 않는 모습을 보며 코딩은 섬세한 작업이라는 걸 배웠다. 나중에 조금 더 배운 후 부족한 기능을 보완해 보고 싶다.
'PYTHON' 카테고리의 다른 글
[TIL] PYTHON 모듈-tabulate (0) | 2024.07.04 |
---|---|
[TIL] PYTHON 이론공부 - Class함수 (0) | 2024.07.03 |
[TIL] 파이썬 값의 데이터 유형 (0) | 2024.07.01 |
파이썬(Python) 이론 공부 - 코드 컨벤션 (0) | 2024.06.28 |
[TIL] 파이썬의 기초 & FLASK (강의 요약 및 이론 공부) (0) | 2024.06.24 |