#Python - 33. 파이썬 try, except
본문 바로가기
Programming/Python

#Python - 33. 파이썬 try, except

by 권가 2020. 2. 11.

이번 시간에는 저번 시간에 배운 Python의 예외 종류를 처리하는 방법을 배워보겠습니다.

2020/02/07 - [Python] - #Python - 32. 파이썬 exception 종류

 

#Python - 32. 파이썬 exception 종류

이번 시간에는 프로그래밍의 꽃! exception(예외)에 대해 공부했습니다. 파이썬의 예외들을 알아볼까요? 파이썬 공식 문서를 참조했습니다. https://docs.python.org/ko/3/library/exceptions.html 내장 예외 &md..

kwongas.tistory.com

text = 'text'
try:
    number = int(text)
except ValueError:
    print('{}는 숫자가 아닙니다.'.format(text))

이렇게 코딩할 수 있죠!

바로 응용해보겠습니다.

기존에 배운 함수|전역/지역 변수|while 반복문|if/elif/else 조건문|list의 append, pop|break, continue| 등을 활용해 간단한 list 조작 예제를 만들어 봤습니다! 

def append(list, val):
    list.append(val)
    print('---{}에 {}를 넣었습니다.'.format(list, pushValue))


def pop(list, popValue):
    # if index < len(list):
    #     list.pop(index)
    # else: print('잘못된 index 설정!')
    try:
        index = int(popValue)
        list.pop(index)
        print('---{}에 {}번째 값을 뺏습니다.'.format(list, popValue))
    except IndexError:
        print('잘못된 index 설정!')
        print('{}의 인덱스는 {}부터 {}까지'.format(list, 0, len(list)-1))
    except ValueError:
        print('잘못된 값 설정!')
    except TypeError:
        print('숫자가 아닙니다')


list = ['가', 'A', '1']
while True:
    print('현재 리스트={}'.format(list))
    print('MENU: 1.APPEND, 2.POP, exit.종료')
    selectedMenu = input('메뉴를 선택해주세요>')
    if selectedMenu == 'exit':
        break

    elif selectedMenu == '1':
        print('선택: APPEND.(취소: back)')
        pushValue = input('list에 넣을 값을 입력해주세요>')
        if pushValue == 'back':
            print()
            continue
        else:
            append(list, pushValue)

    elif selectedMenu == '2':
        print('선택: POP(취소: back)')
        popValue = input('몇 번째 값을 제거하시겠습니까?')
        if popValue == 'back':
            print()
            continue
        else:
            pop(list, popValue)
    else:
        print('잘못된 메뉴!')
        print()
        continue
    print()

try, except 문

Line 7~9: 함수 pop에서 try, except 문을 if, else 문으로 대처할 수 있습니다!

상황에 맞게 골라 쓰시면 됩니다!

원리를 자세히 알고 있는 사람들은 if, else문으로 자유롭게 다룰 수 있겠죠?

 

except 설명

  Line 14: IndexError

pop에서 범위가 넘는 index 즉, if문에서와 같이 최대 길이의 index를 넘은 값이 index로 들어오면 컴퓨터는 당연히 알아들을 수 없기 때문에 이에 대해 IndexError except로 예외 처리!

  Line 17: ValueError

pop에서 잘못된 index 즉, 숫자가 들어와야하는데 문자로 들어오면 그에 대한 예외를 처리해주기 위해 ValueError로 예외 처리!

Line 11: index = int(popValue)에서 popValue를 정수형으로 변환하는데 변환할 수 없는 값이라 ValueError 발생

  Line 19: TypeError

index값은 숫자로 가리킬 수 있는데 숫자가 아닌 다른 값이 들어왔을 때 예외를 처리해주기 위해 TypeError로 예외 처리!

Line 11: index = int(popValue)로 대체하였지만 

이러한 코드일 때 문자형 '4'가 전달되므로 TypeError가 발생하여 예외가 발생한다.

 

while문

Line24: while True로 선언함으로써 항상 참인 조건으로 while문이 무한 반복하게 된다.

while 반복문이 재시작 될 때마다 현재의 리스트 현황을 찍어주면서

메뉴를 입력 받아 사용자가 원하는 작업을 실행할 수 있다.

Line 26: 만약 메뉴를 입력하는 시점에서 exit을 입력하면 프로그램 종료...

메뉴: 1=APPEND, 2=POP, exit=종료

Line 34, 43: 1혹은 2를 눌러 메뉴를 선택했으나 잘못 선택했을 경우 back을 입력해 다시 메뉴 선택으로 돌아갈 수 있다.

Line 51: 1, 2, exit이 아닐 경우 다시 반복 시작.

 

 

댓글