본문 바로가기
Programming Languages/Python

Chapter 10. 예외 처리

by 더 이프 2023. 3. 17.
728x90

Chapter 10. 예외 처리

 1. 예외 처리

  ⦁ 프로그램을 만들 때 발생하는 오류를 처리하기 위해 사용

  ⦁ try, except 구문을 사용하여 예외 처리

  ⦁ except를 여러개 사용하여 다양한 오류에 대해 처리 가능

 2. Example

 a. valueError

# valueError
a = 'abc'
print(a)
print(type(a))

try:
    b = int(a)
except ValueError:
    b = -1
print(b)
print(type(b))

# 결과값
abc
<class 'str'>
-1
<class 'int'>

 b. indexError

# indexError
x = []
try:
    print(x[0])
except IndexError:
    print('IndexError')
    
# 결과값
IndexError

 c. 전국건강증진센터표준데이터

# 전국건강증진센터표준데이터
csv_data=[]
# 데이터를 가져와 쉼표로 나눔
with open('전국건강증진센터표준데이터.csv') as f:
    for line in f:
        csv_data.append(line.split(','))
        
# column 중 의사 수의 index를 대입
doctor_index = csv_data[0].index('의사수')

# 데이터 column 출력
for i,e in enumerate(csv_data[0]):
    print(i,e)

# 결과값
0 건강증진센터명
1 건강증진센터구분
2 소재지도로명주소
3 소재지지번주소
4 위도
5 경도
6 건강증진업무내용
7 운영시작시각
8 운영종료시각
9 휴무일정보
10 건물면적
11 의사수
12 간호사수
13 사회복지사수
14 영양사수
15 기타인력현황
16 기타이용안내
17 운영기관전화번호
18 운영기관명
19 관리기관전화번호
20 관리기관명
21 데이터기준일자
22 제공기관코드
23 제공기관명
doctor_count=[]
# 각 센터의 의사 수를 새로운 리스트에 추가
for e in csv_data[1:]:
    doctor_count.append(e[doctor_index])
    
print(doctor_count)
# 리스트의 길이를 통해 센터 수 확인
print('center count: ', len(doctor_count))
# 리스트 내 값이 0인 곳의 수를 구해 의사가 없는 센터 수 확인
print('center with no doctor: ', doctor_count.count('0'))

# 결과값
['0', '0', '1', '0', '0', '1', '0', '1', '1', '1', '1', '0', '1', '1', '1', '1', '1', '1', '0', '0', '1', '1', '1', '0', '1', '0', '0', '0', '0', '0', '0', '1', '1', '12', '1', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '1', '1', '2', '1', '0', '1', '0', '1', '1', '0', '1', '0', '1', '1', '1', '1', '1', '1', '0', '1', '0', '0', '2', '1', '0', '1', '1', '0', '0', '1', '0', '1', '0', '0', '0', '0', '0', '1', '0', '0', '1', '1', '1', '1', '1', '0', '0', '0', '1', '1', '1', '1', '1', '0', '1', '0', '0', '0', '1', '0', '0', '1', '0', '1', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '1', '1', '1', '0', '0', '0', '0', '0', '1', '0', '1', '0', '0', '0', '0', '0', '1', '0', '1', '1', '1', '1', '0', '1', '1', '0', '0', '7', '1', '0', '0', '0', '0', '0', '1', '0', '1', '1', '5', '1', '1', '0', '0', '0', '0', '0', '1', '1', '1', '1', '2', '0', '0', '0', '0', '0', '1', '0', '1', '0', '1', '1', '0', '0', '0', '1', '1', '1', '1', '0', '0', '0', '0', '0', '0', '1', '1', '1', '2', '0', '0', '0', '0', '1', '1', '0', '0', '0', '1', '1', '1', '0', '1', '0', '0', '0', '1', '4', '0', '1', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '0', '1', '0', '0', '0', '0', '1', '1', '1', '0', '0', '0', '1', '0', '0', '0', '0', '0', '0', '1', '1', '4', '1', '0', '1', '0', '0', '0', '1', '0', '1', '0', '1', '1', '0', '1']
center count:  292
center with no doctor:  167
# 오류가 발생할 경우 그 값을 0으로 변경하는 예외 처리
for i, c in enumerate(doctor_count):
    try:
        doctor_count[i] = int(c)
    except:
        doctor_count[i] = 0
print('total doctor count: ', sum(doctor_count))

# 결과값
total doctor count:  156