ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 74 - (파이썬) 예외 처리의 try except 구문
    study with Q - 파이썬 2024. 8. 12. 17:40

    # 조건문으로 예외처리 했던 과거의 코드

    : 과거까지야...

     

    r = input("반지름을 정수로 입력하시오: ")
    print()
    
    if r.isdigit():
      num = int(r)
      print(f"원의 반지름: {num}")
      print(f"원의 둘레의 길이: {2*3.14*num}")
      print(f"원의 넓이: {3.14*num*num}")
    
    else:
      print("방금 입력한 건 정수가 아니란다.")

     

    하지만 세상은 그렇게 만만하지 않기에... int를 제외하는 함수만이 아닌 코드도 많고, 생각하지 못한 예외도 많기에

     

    # try except 구문

    try: 
      예외가 발생할 수 있는 코드
    except :
      예외가 발생했을 때 실행할 코드

     

    * try와 except를 항상 함께 입력함.

    ** try와 except 뒤에는 복합구문(Suite)가 와야 하므로 if, for, while, def 등등처럼 들여쓰기 넣고 코드를 입력해야 함.

     

    r = input("반지름을 정수로 입력하시오: ")
    print()
    try: 
      radi = int(r)
      print(f"구의 반지름: {radi}")
      print(f"구의 겉넓이: {2*3.14*radi*radi}")
      print(f"구의 부피: {3/4*3.14**radi*radi*radi}")
    
    except :
      print("반지름이 정수로 입력되지 않았습니다.")
    >>>
    반지름을 정수로 입력하시오: 3
    
    구의 반지름: 3
    구의 겉넓이: 56.519999999999996
    구의 부피: 208.974222
     
     
    반지름을 정수로 입력하시오: 3.24
    
    반지름이 정수로 입력되지 않았습니다.
    
    반지름을 정수로 입력하시오: 10e
    
    반지름이 정수로 입력되지 않았습니다.

     

    부동소수점으로 바꿀 때도

    r = input("반지름을 소수로 입력하시오: ")
    print()
    
    try: 
      radi = float(r)
      print(f"구의 반지름: {radi}")
      print(f"구의 겉넓이: {2*3.14*radi*radi}")
      print(f"구의 부피: {3/4*3.14**radi*radi*radi}")
    
    except :
      print("반지름이 소수로 입력되지 않았습니다.")

     

    예외를 구분하는 로직을 떠올릴 필요가 없기 때문에 짱 편함...!

     

    # try except 구문 + pass 키워드

    try: 
      예외가 발생할 수 있는 코드
    except :
      pass

     

    입력리스트 = ["14", "2.7", "hello", "102", "오레오"]
    출력리스트 = []
    
    for 요소 in 입력리스트:
      try:
        출력리스트.append(float(요소))
      except:
        pass
    
    print(출력리스트) # [14, 2.7, 102]
    >>>
    [14.0, 2.7, 102.0]

     

    그리고 참고로

    더보기
    def isfloat(입력):
      try:
        float(입력)
        return True
      except:
        return False
    
    입력리스트 = ["14", "2.7", "hello", "102", "오레오"]
    출력리스트 = []
    
    for 요소 in 입력리스트:
      if isfloat(요소):
        출력리스트.append(float(요소))
      
    print(출력리스트) # [14, 2.7, 102]

    이 경우도 위와 동일하게 나온다.

     


    https://replit.com/@wh3308/yeoeceori#main.py

Designed by Tistory.