AboutPython

[파이썬] try ~ except ~ else, finally

scone 2022. 5. 4. 15:36

[try ~ except ~ else]

  • try 구문을 실행해서 에러가 발생 했을때는 except를 출력하고, 에러가 발생하지 않으면 else 구문이 출력된다.

 

[실습1] 사용자로부터 숫자 5개 입력받아  짝수, 홀수, 실수로 구분해서 각각을 리스트에 저장하는 프로그램을 만들자.

  • 전 게시물에서는 conitnue를 써서 except 밑에 구문들을 실행할 필요 없게 했는데,
    try ~ except ~ else 는 어차피 else 구문을 실행하지 않으니 continue를 적을 필요가 없게 됐다.
evenlist=[]
oddlist=[]
floatlist=[]

n=5
while n>0:
    try :
        inputNum = float(input('숫자 입력 : '))
    except :
        print('숫자만 입력하세요.')
    else :
        if inputNum % 1 != 0:
            floatlist.append(inputNum)
        elif inputNum % 2 != 0 :
            oddlist.append(int(inputNum))
        elif inputNum % 2 == 0 :
            evenlist.append(int(inputNum))
        n-=1
print(f'홀수 리스트 : {oddlist}')
print(f'짝수 리스트 : {evenlist}')
print(f'실수 리스트 : {floatlist}')
'''
숫자 입력 : 3.14
숫자 입력 : 23
숫자 입력 : 22
숫자 입력 : abc
숫자만 입력하세요.
숫자 입력 : 문자
숫자만 입력하세요.
숫자 입력 : 3.72
숫자 입력 : 1
홀수 리스트 : [23, 1]
짝수 리스트 : [22]
실수 리스트 : [3.14, 3.72]
'''

 


[finally]

  • 예외 발생과 상관없이 항상 실행한다.
    ex) 외부 자원을 가지고 쓸 때, 예외가 발생하던 발생하지 않던 반드시 마지막에 자원 해제를 해줘야하는데 그럴 때 주로 쓴다. 
try :
    inputData = input('정수를 입력해주세요 : ')
    inputNum = int(inputData)
except :
    print('정수가 아닙니다!!')
    print('정수가 더 멋있어요!')
else :
    print('이것은 정수가 맞군요.')
    print('정수 좋아')
finally :
    print(f'당신은 {inputData}를 입력하셨습니다.')
'''
# 정수를 입력했을 때
정수를 입력해주세요 : 10                       # try
이것은 정수가 맞군요.                          # else
정수 좋아
당신은 10를 입력하셨습니다.                    # finally

# 정수를 입력하지 않아 에러가 발생했을 때
정수를 입력해주세요 : 안녕                     # try
정수가 아닙니다!!                              # except
정수가 더 멋있어요!
당신은 안녕를 입력하셨습니다.                  # finally
'''

[실습2] 실습 1의 프로그램에서 더 나아가, 사용자가 입력한 input을 모두 출력하는 프로그램을 만들자.

evenlist=[]
oddlist=[]
floatlist=[]
inputlist = []

n=5
while n>0:
    try :
        inputData = input('숫자 입력 : ')
        inputNum = float(inputData)
    except :
        print('숫자만 입력하세요.')
    else :
        if inputNum % 1 != 0:
            floatlist.append(inputNum)
        elif inputNum % 2 != 0 :
            oddlist.append(int(inputNum))
        elif inputNum % 2 == 0 :
            evenlist.append(int(inputNum))
        n-=1
    finally :
        inputlist.append(inputData)
        
print(f'홀수 리스트 : {oddlist}')
print(f'짝수 리스트 : {evenlist}')
print(f'실수 리스트 : {floatlist}')
print(f'사용자가 입력한 리스트 : {inputlist}')
'''
숫자 입력 : 어디
숫자만 입력하세요.
숫자 입력 : 봅시다.
숫자만 입력하세요.
숫자 입력 : hi
숫자만 입력하세요.
숫자 입력 : 5
숫자 입력 : 4
숫자 입력 : 3.21
숫자 입력 : 21
숫자 입력 : 1
홀수 리스트 : [5, 21, 1]
짝수 리스트 : [4]
실수 리스트 : [3.21]
사용자가 입력한 리스트 : ['어디', '봅시다.', 'hi', '5', '4', '3.21', '21', '1']
'''