실습코드
import random
def number_guess_game():
# 1부터 100 사이의 랜덤 숫자 생성
target_number = random.randint(1, 100)
attempts = 0
max_attempts = 10
print("1부터 100 사이의 숫자를 맞춰보세요!")
print(f"기회는 총 {max_attempts}번 있습니다.")
while attempts < max_attempts:
# 남은 기회 표시
print(f"\n남은 기회: {max_attempts - attempts}번")
# 사용자 입력 받기
try:
guess = int(input("숫자를 입력하세요: "))
# 입력값 범위 확인
if guess < 1 or guess > 100:
print("1부터 100 사이의 숫자를 입력해주세요!")
continue
except ValueError:
print("올바른 숫자를 입력해주세요!")
continue
# 시도 횟수 증가
attempts += 1
# 정답 비교
if guess == target_number:
print(f"\n축하합니다! {attempts}번 만에 숫자를 맞추셨습니다!")
print(f"정답은 {target_number}였습니다!")
break
elif guess < target_number:
print("Up! 더 큰 숫자를 입력해보세요.")
else:
print("Down! 더 작은 숫자를 입력해보세요.")
# 마지막 기회를 사용한 경우
if attempts == max_attempts:
print(f"\n게임 오버! 모든 기회를 사용하셨습니다.")
print(f"정답은 {target_number}였습니다!")
# 게임 재시작 여부 확인
retry = input("\n다시 도전하시겠습니까? (y/n): ")
if retry.lower() == 'y':
number_guess_game()
else:
print("게임을 종료합니다. 감사합니다!")
if __name__ == "__main__":
number_guess_game()
추가로 이번에는 random 모듈을 사용하여 무작위 숫자를 생성했습니다. 계산기 예제에서 사용한 것과 같은 기본 개념들을 활용하되, 게임이라는 다른 맥락에서 응용해보았습니다.
게임의 규칙은 다음과 같습니다:
- 1부터 100 사이의 무작위 숫자를 맞추는 게임입니다.
- 총 10번의 기회가 주어집니다.
- 각 시도마다 입력한 숫자가 정답보다 큰지 작은지 알려줍니다.
- 게임이 끝나면 다시 시작할 수 있습니다.
어떤 지식이 적용된지 알아보자
- 변수 사용
- target_number: 맞춰야 할 목표 숫자
- attempts: 시도 횟수
- guess: 사용자가 입력한 숫자
- max_attempts: 최대 시도 가능 횟수
- 조건문(if-elif-else)
- 입력값이 범위 내에 있는지 확인
- 사용자의 추측이 정답보다 큰지 작은지 확인
- 게임 재시작 여부 확인
- 반복문(while)
- 최대 시도 횟수에 도달할 때까지 게임 진행
- continue를 사용하여 잘못된 입력 처리
- 예외 처리(try-except)
- 사용자가 숫자가 아닌 값을 입력했을 때 처리
각 코드에 적용된 개념을 한번 살펴보자
- 변수(Variables)
계산기처럼 여기서도 변수를 사용해 데이터를 저장했습니다. target_number에는 맞춰야 할 숫자가, attempts에는 시도 횟수가, guess에는 사용자의 입력값이 저장됩니다.
- 데이터 타입(Data Types)
계산기에서는 실수(float)를 주로 썼지만, 이번에는 정수(int)를 주로 사용했습니다. 게임 재시작 여부는 문자열로 입력받습니다.
- 조건문(if-elif-else)
계산기에서 연산 선택할 때처럼, 여기서는 사용자가 입력한 숫자와 정답을 비교하는데 조건문을 사용했습니다.
- 반복문(while)
계산기처럼 while문을 사용했지만, 이번에는 'True' 대신 attempts가 max_attempts보다 작을 때만 반복하도록 조건을 넣었습니다.
- 예외 처리(try-except)
계산기와 같은 방식으로, 사용자가 숫자가 아닌 값을 입력했을 때를 대비한 예외 처리를 했습니다.
이렇게 계산기에서 사용했던 동일한 개념들을 다른 방식으로 조합해서 새로운 프로그램을 만들었습니다. 예를 들어:
- 계산기는 사칙연산을 선택하는 조건문이었다면, 게임은 숫자의 크기를 비교하는 조건문을 사용
- 계산기는 종료를 선택할 때까지 무한 반복이었다면, 게임은 정해진 횟수만큼만 반복
- 두 프로그램 모두 잘못된 입력을 방지하기 위해 비슷한 예외 처리 사용
'오픈소스를 위한 기초 상식' 카테고리의 다른 글
HTML과 CSS의 기본 이해: 웹 개발의 첫걸음 (0) | 2025.01.23 |
---|---|
파이썬 기초 실습_ 데일리 플래너 만들기 (0) | 2025.01.21 |
파이썬 기초 실습_ 사칙 연산 계산기 만들기 (0) | 2025.01.16 |
조건문과 반복문: 파이썬에서 논리와 흐름을 제어하는 힘 (0) | 2025.01.14 |
파이썬 자료형 완벽 가이드 (0) | 2025.01.12 |