Python 연습

TIL Day 16

By polaris0208

Python 실습

숫자 맞추기 게임 코드 작성

조건

1부터 10까지의 숫자를 선택
플레이어의 선택과 컴퓨터의 선택이 같으면 정답
오답일 경우 정답에 대한 정보 제공
범위를 벗어날 경우 경고
게임 종료  안내

계획

값은 1 부터. 10, 정수형 -> int(), input()
무작위로 숫자 생성 -> 모듈 활용
입력값 비교 -> 연산자 활용
조건 설정 -> if, elif, else
반복 설정 -> while 또는 for loop

작성

random 모듈 활용

  • 정수형만 취급
  • randint(1,10)
  • randrange(1,11,1)
pip install random
import random
from random import randint

입력값 설정

  • randint()로 컴퓨터의 값 생성
  • input()으로 플레이어 값 생성
  • int()로 플레이어 값을 정수형으로 변환하여 컴퓨터 값과 비교
  player_choice = int(input('1과 10 사이의 숫자를 입력하세요.'))
  computer_choice = randint(1,10)

값 비교

player_choice < 1 or player_choice >10:
player_choice == computer_choice
player_choice > computer_choice
player_choice < computer_choice

조건 형성

  • 조건이 여러개
  • if-elif 사용하여 정보 출력
  • 범위 조건을 제일 먼저 작성
  • 다른 조건이 위에 위치 할 경우 범위를 벗어나도 작동되는 경우 발생
 if player_choice < 1 or player_choice >10:
   print('범위를 벗어 났습니다.')
elif player_choice == computer_choice:
  print('정답!')
elif player_choice > computer_choice:
  print('다운!')
elif player_choice < computer_choice:
  print('업!')

반복 설정

  • 정답을 맞출 때까지 반복하도록 설정
  • while 반복문 사용
playing_game = True
computer_choice = randint(1,10)
while playing_game: # 숫자 비교 반복문
  player_choice = int(input('1과 10 사이의 숫자를 입력하세요.'))
  if player_choice < 1 or player_choice >10:
    print('범위를 벗어 났습니다.')
  elif player_choice == computer_choice:
    print('정답!')
  elif player_choice > computer_choice:
    print('다운!')
  elif player_choice < computer_choice:
    print('업!')

추가조건

재시작 또는 종료 기능

  • 정답일 경우 재시작 또는 종료 선택
elif player_choice == computer_choice:
     print('정답!')
     answer = input('다시하려면 r, 종료하려면 q를 눌러주세요.')
  • 재시작 - 기존 숫자 맞추기 반복문 밖에 while 반복문 추가
  • while 반복문 시작을 위한 switch 코드 제작
while switch_on == True:
  game_on = True
  print('게임을 시작합니다.')
  computer_choice = randint(1,10)
  print('컴퓨터가 숫자를 선택중입니다.')
  while game_on: 
  				...
switch = input('turn on/off')
while not switch == 'on' and not switch == 'off':
  try: 
    switch = input('turn on/off')
    if switch == 'on' or switch == 'off': switch_on = True
  except: continue
if switch == 'on':
  print('booting...')
  switch_on = True
elif switch == 'off':
  print('hold')
  switch_on = False
  • 종료 - while 반복문 정지
# 숫자 맞추기 while 반복문 종료 후
# 게임 반복문 종료 값을 반환하여 종료
    elif player_choice == computer_choice:
     print('정답!')
     answer = input('다시하려면 r, 종료하려면 q를 눌러주세요.')
     if answer == 'r': 
      print('다시 시작합니다.')
      continue
     elif answer == 'q':
      switch_kill = 'k'
      break
  if switch_kill == 'k':
    print('종료합니다.')
    break

Person Class 생성

조건

이름, 나이, 성별로 class 구성
성별은 male 또는 female
성별 유효성 검사
instance 생성
출력 조건 = (key : value)형태, 행 분리

계획

instance의 성별을 조건문을 통해 판별
input()을 통해 정정값 받기
정정값이 조건에 부합할 때까지 반복
출력에 줄바꿈 사용

기본구조 작성

class Person:
  def __init__(self, name, age, gender):
    self.name = name
    self.age = age
    self.gender = gender
    
faker= Person(name = "이상혁", age=20, gender = 'god')

성별 유효성 검사

  • male도 female도 아닌 경우 판별
not self.gender == 'male' and not self.gender == 'female'

정정값 받기

  • 받은 정정값도 조건에 해당하는지 판별
self.gender = input('male or female')
if self.gender == 'male' or self.gender == 'femlae'

예외 처리

  • try-except 사용
  • 단순 while문으로 구성할 경우 조건 설정이 복잡
while not self.gender == 'male' and not self.gender == 'female': 
# instance의 성별이 male 또는 female가 아닐 경우(예외) 작동
    try: # 정정값을 받고 male 또는 female 값을 입력하면 종료
      self.gender = input('male or female')
      if self.gender == 'male' or self.gender == 'femlae': break 
    except: continue # 정정값이 조건에 맞지 않으면 반복

출력

  • f-string 으로 데이터를 받아 입력
  • \n 으로 줄바꿈 실행하여 행 분리
  def display(self):
    print(f'이름 : {self.name}, 성별 : {self.gender}\n나이 : {self.age}')

정리

class Person:
  def __init__(self, name, age, gender):
    self.name = name
    self.age = age
    self.gender = gender
    while not self.gender == 'male' and not self.gender == 'female': 
      try: 
        self.gender = input('male or female')
        if self.gender == 'male' or self.gender == 'femlae': break
      except: continue
        
  def display(self):
    print(f'이름 : {self.name}, 성별 : {self.gender}\n나이 : {self.age}')
    
faker= Person(name = "이상혁", age=28, gender = 'god')
faker.display()
# 성별을 god으로 설정하여 메시지 출력
male or female male 
# input 'male'
이름 : 이상혁, 성별 : male
나이 : 20
Tags: TIL Python