안녕하세요 한주현입니다.
오늘은 파이썬 스크립트 실행 중 만날 수 있는 오류인,
ZeroDivisionError: integer division or modulo by zero
ZeroDivisionError: division by zero
와 try-except 사용방법
에 대하여 알아보겠습니다.
문제 상황
ZeroDivisionError: division by zero
두 오류는 각각 python2 와 python3 에서 어떠한 수를 0으로 나눌 때 발생하는 오류입니다.
예를 들자면 다음과 같지요.
1 2 3 4 5 6 7 8 9 10 11 12 13 | >>> # python2 >>> 2/0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero >>> >>> # python3 >>> 3/0 Traceback (most recent call last): File "<stdin>", line 1, in <module> ZeroDivisionError: division by zero >>> | cs |
오류가 나면 문제점이 코드가 끝나게 되는 상황이 되어버린다는 점 입니다.
예를 들어, 다음과 같이 코드를 작성하였다고 해봅시다.
리스트에서 하나씩 for로 빼내어 어떠한 수를 나눈다고 해 봅시다.
1 2 3 4 | lst = [1,3,5,0,2] for i in lst: print(10 / i) | cs |
아래와 같이 실행되다가 4번째 항목인 0에서 오류가 나게 되고,
5번째 항목인 2는 나눠질 기회가 없이 코드가 멈추게 됩니다.
1 2 3 4 5 6 7 | 10.0 3.3333333333333335 2.0 Traceback (most recent call last): File "zero.py", line 4, in <module> print(10 / i) ZeroDivisionError: division by zero | cs |
0으로 나누게 될 경우는 오류가 난다고 하지만,
이를 넘어가고 계속 코드가 진행되게는 할 수 없을까요?
해결 방법
ZeroDivisionError: integer division or modulo by zero
ZeroDivisionError: division by zero
해결방법은 try-except 문을 사용하시면 됩니다.
try-except 의 형태
try-except 문은 다음과 같이 try안에 먼저 수행하고 싶은 문장을 넣고,
그것이 오류가 났을 때 할 문장을 except에 넣으시면 됩니다.
1 2 3 4 | try: <statement> except type_of_error: <statement> |
그러면 코드를 수정해서 0으로 나눌때는 ZeroDivision이라고 출력하고 지나가게 해봅시다.
1 2 3 4 5 6 7 | lst = [1,3,5,0,2] for i in lst: try: print(10 / i) except ZeroDivisionError: print("ZeroDivision") | cs |
실행,
1 2 3 4 5 | 10.0 3.3333333333333335 2.0 ZeroDivision 5.0 | cs |
0이 나와도 오류메시지가 나오지 않고 코드가 실행되었습니다 ㅎㅎ
오늘은 파이썬 ZeroDivisionError 와 해결 방법인 try-except 사용 방법을 알아보았습니다.
여러분들께 도움이 되셨으면 좋겠네요
그럼 다음 시간에 만나요!
'컴퓨터 > Python' 카테고리의 다른 글
[pandas] 파이썬 판다스를 활용한 컬럼 정렬 (0) | 2018.02.05 |
---|---|
[파이썬] 파이썬으로 달력 만들기, html 달력 웹 페이지 만들기 (0) | 2017.11.27 |
[파이썬] 파이썬 에러 TypeError: hello() takes 0 positional arguments but 1 was given , 파이썬 클래스에서 self를 사용하는 이유 (0) | 2017.11.12 |
[파이썬] 파이썬 에러 UnboundLocalError: local variable referenced before assignment (7) | 2017.11.02 |
[파이썬] 파이썬 에러 SyntaxError: Non-ASCII character (0) | 2017.11.02 |
댓글