[zerobase_데이터 취업스쿨_스터디노트] 1.파이썬중급

김소희·2023년 11월 11일
0

study_note

목록 보기
1/50

오늘수강한분량

31finally
32_Exception 클래스
33
사용자 Exception 클래스
34텍스트 파일 쓰기
35
텍스트 파일 읽기
36_텍스트 파일 열기
37_with ~ as문
38_writelines()
39_readlines(), readline()

각강의별학습한핵심내용정리

1. finally 구문은 예외가 발생하던 발생하지 않던 실행한다.

예시코드)

try:
    inputData = input('input data: ')
    numInt = int(inputData)
    
except:
    print('exception raise!!')
    print('not number!!')
    
else:
    if numInt % 2 == 0:
        print('even number!!')
    else:
        print('odd number!!')
        
finally:
    print(f'inputData: {inputData}')
    
    
결과)
input data: 10
even number!!
inputData: 10

예시코드2)
evenList = []; oddList = []; floatList = []; dataList = []

n = 1
while n < 6:
    
    try:
        data = input('input number: ')
        floatNum = float(data)
    except:
        print('exception raise!!')
        print('not number!!')
        continue
    else:
        if floatNum - int(floatNum) != 0:
            print('float number!!')
            floatList.append(floatNum)
        else:
            if floatNum % 2 == 0:
                print('even number!!')
                evenList.append(floatNum)
            else:
                print('odd number!!')
                oddList.append(floatNum)
        n += 1
    finally:
        dataList.append(data)
        
print(f'evenList: {evenList}')
print(f'oddList: {oddList}')
print(f'floatList: {floatList}')
print(f'dataList: {dataList}')


실행결과)
input number: 1
odd number!!
input number: 2
even number!!
input number: 10
even number!!
input number: 15
odd number!!
input number: 3.2
float number!!
evenList: [2.0, 10.0]
oddList: [1.0, 15.0]
floatList: [3.2]
dataList: ['1', '2', '10', '15', '3.2']

2. exception 클래스는 예외를 담당하는 클래스 이다.

예외가 발생할 경우 어떤 에러인지 문구를 출력해준다.

예시코드)

num1= int(input('input number1: '))
num2= int(input('input number2: '))

try:
    print(f'num1 / num2: {num1 / num2}')
except Exception as e:
    print(f'exception: {e}')
    print('0으로 나눌 수 없어요')
    
print(f'num1 * num2 = {num1 * num2}')
print(f'num1 - num2 = {num1 - num2}')
print(f'num1 + num2 = {num1 + num2}')

실행결과)
input number1: 10
input number2: 0
exception: division by zero
0으로 나눌 수 없어요
num1 * num2 = 0
num1 - num2 = 10
num1 + num2 = 10

2-1. raise 키워드를 이용하면 예외를 발생 시킬 수 있다.

예시코드)
def divCalculator(n1,n2):
    
    if n2 != 0:
        print(f'{n1} / {n2} = {n1 / n2}')
    else:
        raise Exception('0으로 나눌 수 없습니다.')


num1 = int(input('input number1: '))
num2 = int(input('input number2: '))

try:
    divCalculator(num1, num2)
except Exception as e:
    print(f'Exception : {e}')
    
    
    
    
    
실행결과)
input number1: 10
input number2: 0
Exception : 0으로 나눌 수 없습니다.

위에 코드를 보면 if else 문에서 else 에 raise 키워드를 사용하여 우리가 에러 메세지를
직접 지정할 수 있다. 아래 함수를 실행하는 부분을 try 문에 넣고 함수에 문제가 생길 경우
except 문이 실행이 되는데 그때 위에 지정했던 Exception 문구를 불러 온다.

실습코드)

def sendSMS(msg):
    
    if len(msg) > 10:
        raise Exception('길이 초과! MMS 전환 후 발송!!', 1)
    
    else:
        print('sms발송!')
        

def sendMMS(msg):
    
    if len(msg) <= 10:
        raise Exception('길이 미달!! SMS전환 후 발송!!', 2)
    
    else:
        print('MMS발송!!')

msg = input('input message: ')

try:
    sendMMS(msg)
except Exception as e:
    print(f'e: {e.args[0]}')
    print(f'e: {e.args[1]}')
    
    if e.args[1] == 1:
        sendMMS(msg)
    elif e.args[1] == 2:
        sendSMS(msg)
        
        
실행결과)
input message: 안녕하세요
e: 길이 미달!! SMS전환 후 발송!!
e: 2
sms발송!

수강하면서흥미로웠던부분

finally 는 파이썬을 사용하면서 처음 써보는 코드였는데,
유용하게 사용할 수 있는 구문이라는 생각이 들었다.
파이썬 기초는 어느정도 알고 있다고 여겼었는데 이렇게 처음 알게되는 것들이 많다는 것을
느끼고 기초를 정말 탄탄하게 다시 공부해야겠다는 생각이 들었다.

특히 파이썬은 에러가 나면 코드가 그냥 죽어버리기 때문에 try-except 문이
개발자들에게 매우 유용하다는 생각이 들었다. 역시 코딩은 문법을 잘 알기는 해야겠다.

또한 함수 두개를 if 문과 try except 문을 사용해서 왔다갔다 실행할 수 있도록
하는 방법도 너무 꿀팁이라 생각했다ㅋㅋㅋㅋ 실제로 어릴 때 문자시절에는 이런 코드를 가지고
핸드폰 기능을 집어넣었겠구나 생각하니 더욱 흥미로웠다.

내일학습계획

파이썬 (중급문풀 6~7)
파이썬 (중급문풀 8)
기초수학 (기초1~2)
기초수학 (기초1~2)
기초수학 (기초3)
파이썬 2 위클리 퀴즈
+(스터디 모임)

profile
AI 개발자로 가는 길 두렵지 않아요

0개의 댓글