개발공부/SK Networks Family AI bootcamp 강의노트

4일차 [ 파이썬 기초 (퀴즈/반복문/예외처리) ]

HyunJung_Jo 2025. 1. 10. 12:38

1.가위 바위 보 게임

깜짝 퀴즈!

enum을 활용하여 사용자가 가위바위보 중 두개를 입력하여 누가 이겼는 지 판별하는 게임

# 가위,바위,보 게임
import enum
class RockScissorPaper(enum.Enum):
    ROCK = '바위'
    SCISSIOR = '가위'
    PAPER = '보'
   # todo: enum 다시 해보기


def rock_scissor_paper(data):
    rock = RockScissorPaper.ROCK.value
    scissor = RockScissorPaper.SCISSIOR.value
    paper = RockScissorPaper.PAPER.value

    # data ex) '가위,바위'
    if (rock not in data) and (scissor not in data) and (paper not in data):
        return '잘못된 입력입니다.'
    data = data.split(',')
    u1 = data[0]
    u2 = data[1]

    if u1 == u2:
        return '비겼습니다.'
    if (u1 == rock and u2 == scissor) or (u1 == scissor and u2 == paper) or (u1 == paper and u2 == rock):
        return 'user1이 이겼습니다.'
    else:
        return 'user2가 이겼습니다.'
    
data=input('입력해주세요 (ex: 가위,바위):')
rock_scissor_paper(data)

 

안다는 것은 바로 적용할 수 있는 것이다!

 

2. while, for

# 1번 코드와 2번 코드가 동일
# (1번)
for i in range(10,60,10):
    print(i)
  
# (2번)
lst = [i for i in range(10,60,10)]
# lst = [10,20,30,40,50]
i = 0
while i < len(lst): 
    # while bool : bool 값이 True일 때까지 반복
    print(lst[i])
    i+=1 # <==
lst = [i for i in range(10,60,10)]
# lst = [10,20,30,40,50]
i = 0
while i < len(lst): 
    # while bool : bool 값이 True일 때까지 반복
    i+=1 # <==
    print(lst[i])
  • 위 코드와 아래 코드의 차이를 논리적으로 생각해보아라.
  • 미리 결과를 예상해볼 수 있어야 한다!
  • 아래 코드는 index out of range 에러가 남
lst = [i for i in range(10,60,10)]
# lst = [10,20,30,40,50]
i = 0
while i < len(lst): 
    # while bool : bool 값이 True일 때까지 반복
    i+=1

    # 스파게티 코드를 줄일 수 있는 팁!
    # 거짓일 때 아예 멈추게 하는 것이 더 깔끔하다.
    if i >= len(lst): # <==
        break
    

    print(lst[i])

 

2-1.Hello 찍기

  • 설계하는 연습!

2-2. 짝수 존재 여부 판별

'''
원본 데이터: 정수로 이루어진 리스트(ex> [1,2,3,4,5])

[프린트]
만약 짝수가 있으면, 짝수있어요!
만약 짝수가 없으면, 짝수없어요!
''' 
data = [1,2,3,4,5]
for i in data:
    if i % 2 == 0:
        print('짝수있어요!')
        break
else:
	# for문이 다 돌고 아래 실행
    print('짝수없어요!')

 

# 1번보단 2번 쓰는 것이 무한 depth (if else, if else )를 줄일 수가 있다. 
# 1번
while True:
    if True:
        pass
    else:
        pass

# 2번
while True:
    if True:
        continue
    pass

 

3. Exception

  • 오류 종류를 알아야 제대로 디버깅할 수 있다.
  • 비즈니스 오류를 줄이기를 위해서는 따로 Exception 을 회사 정책에 맞게 만들어야 한다.

3-1. ValueError

  • 부적절한 값(value)을 가진 인자(input)를 받았을 때 발생하는 에러
  • 비즈니스 오류를 줄일 때 필요. (ex. 은행에서 대출받을 사람 이름이 틀리면 안됨.)

3-2. IndexError (index out of range)

3-3. SyntaxError (문법오류)

3-4. NameError 

  • 변수 이름을 찾을 수 없는 경우
  • 변수 선언을 하지 않았을 때

3-5.ZeroDivisionError

  • 0으로 나누려고 할 때

3-6. TypeError

3-7. AttributeError

  • 속성 참조 또는 대입이 실패한 경우 발생
  • 올바른 함수를 쓰지 않을 때

3-8. KeyError

  • dict에서 접근하려는 키 값이 없을 때 발생