Django

11일차 파이썬 알고리즘과의 전쟁, 파이썬 try except 예외처리

승현0604 2022. 9. 14. 23:33

오늘은 참 힘든날이다... 문제를 푸는데 머리가 안돌아갈 정도로 너무 과부화가 온것 같다... 오늘도 문제풀면서 반드시 기억해야 할 부분을 정리하고 자야할 것 같다

 

오늘은 예외처리하는 부분을 배웠는데 try와 except문이 기본으로 탑재가 되어있는 코드이다. 

기본적인 형태를 보자

number = "num"

try: # try 구문 안에서 에러가 발생할 경우 except로 넘어감
    number = int(number) # "num"을 숫자로 바꾸는 과정에서 에러 발생
except: # 에러가 발생했을 때 처리
    print(f"{number}은(는) 숫자가 아닙니다.")

예외처리 한마디로 예상치 못한 답변이 들어왔을 때 그 예외처리를 알려주는 코드이다 . 오늘 과제한 것 중에서 계산기를 사용자가 입력을 하는데 숫자를 입력하지 못할경우에 대비하는 코드를 만들어라 라는 과제였다.

try:
    i, j = map(int, input().split())
    calc = Calc(i,j)
    print(calc.Sum())
    print(calc.Min())
    print(calc.Mul())
    print(calc.Div()) 

except ZeroDivisionError:
    print("0으로 나눌 수 없습니다")

except Exception as e:
    print("숫자만 입력 가능합니다")   

다음과 같이 저번시간엥 만들었던 class문에 존재하는 계산기를 try문으로 가져와 예외처리를 진행해 주었다

ZeroDivisuonError는 python안에 자체적으로 탑재가 되어있는 에러코드인데 한마디로 '0으로 나눌수는 없다'라는 의미이다 그래서 사용자가 0을 치면 0으로나눌 수 없다 라는 메세지를 남기는 것이고

 

Exception은 숫자가 아닌 다른문자를 작성을 했을 경우 숫자만 입력이 가능하다는 것을 알리는 예외처리이다.

 

두번째로 오늘은 축약식에 대한 내용도 배웠는데 상당히 인상이 깊었다.

 

이유는 정말 간단하게 4줄되는 코드를 1줄로 줄이는 코드가 많았기 때문이다. 기본 코드를 보자면 

 

numbers = [x for x in range(5)] # [0, 1, 2, 3, 4]

for문을 다음과 같이 줄인것이다 평소였다면 4줄은 되었을 코드인데 정상적으로 작성이 되는 장면이 좀 인상 깊었던것같다.

 

축약식을 사용하는 이유는 코드의 데이터를 줄여서 용량을 줄이자는 목적을 가지고 있다고 배웠는데 그만큼 단점도 많아서 상황에 따라 사용을 해야한다는 점도 배웠다. 

 

그리고 축약식은 모두 동일한 구조를 가지고 있기 때문에 한 가지 자료형에 익숙해지면 다른 자료형에도 적용해서 사용할 수 있다는 장점이 있다. 

 

list / turple / set 축약식 활용법도 한번 보자

 

even_numbers = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]

# 아래와 같이 활용할 수도 있다.
people = [
    ("lee", 32),
    ("kim", 23),
    ("park", 27),
    ("hong", 29),
    ("kang", 26)
]

average_age = sum([x[1] for x in people]) / len(people)
print(average_age) # 27.4

마찬가지로 turple과 dic도 다음과 같이 축약식을 사용하여 간편하게 사용할 수 있다. 

 

마지막으로 배웠던 부분인 lambda함수이다. 

python에서 lambda 함수는 다른 말록 익명 함수라고도 불립니다. 

주로 사용하는 함수는 map/filtert/sort등이 있는데

 

각자 설명만 한번 복습해보자면 

filter함수는 map함수와 비슷한점을 가지고 있다. map은 함수와 리스트를 인자로 받아서 리스트의 요소들로 함수를 호출하는 역할을 해주는데, filter는 추가적으로 조건이 참이 된다면  바로 저장을 하는 기능을 가지고 있습니다 

 

 

아쉬운점 

 

알고리즘 문제가 점점 밀리고 있다. 어제는 문제가 술술 풀려서 다행이다라고 생각을 했지만, 오늘은 영.... 문제가 어려운건지 컨디션이 안좋은건지 점점 밀리는 모습을 보고 초조해하고 있는 것같다. 그러면 안되는데...

그래도 일단 진도에 맞춰서 풀어보려는 노력을 많이해보고 있으니 내 자신한테는 자책하지 말자는 생각을 가지고 있다. 

 

오늘 잘했던 점 

 

팀원들과의 의사소통이 많이 좋아졌다. 나로서는 정말 다행인점이다. 팀장을 맡은지 어연 2주가 넘어가는데 팀원들과 이제는 원활한 소통을 하면서 또 팀장으로써 모르는문제가 있으면 솔선수범 문제를 해결할려고 하는 나의 노력이 내자신한테 자랑 스럽다고 말해주고 싶다(뿌듯)

 

오늘 배웠던 점 

 

아직은 부족하고 많이 부족하다. 그렇지만 2주전에 나와 비교를 해보자면 정말 많이 늘었다고 생각한다. 그런점을 배운것 같다. 아직은 많이 부족하다고 당장은 생각이 들지만 2주전의 나와 비교를 해보자면 정말 미친듯이 늘었다는 사실이다. 

더욱더 자신감을 가져도 된다는 사실을 오늘 알게 되었고, 아직 3달 반의 시간이 남아있는데다가 아직 이번주 시작이다. 

3달반 후에 내 자신이 얼마나 늘었을까에 대한 기대감을 갖고 열심히 임해야겠다는 점을 오늘 뼈저리게 배웠던것 같다