일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- SQL
- 파이썬라이브러리
- 혼공머신
- 텍스트마이닝
- CSS
- pandas
- 자바
- 자바 실습
- 정수와유리수
- 머신러닝
- 정보처리기사실기
- C++
- 운영체제
- 중학수학
- 코딩테스트
- html/css
- 컴퓨터비전
- 데이터베이스
- 연습문제
- 컴퓨터구조
- 데이터분석
- numpy/pandas
- 데이터입출력구현
- 정보처리기사필기
- CNN
- 영어공부
- 중학1-1
- JSP/Servlet
- 딥러닝
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
애러 읽고 대처하기 2 - 자주 접하는 에러코드 2가지 : Index, Import error 본문
전 시간에 이어 자주 접하는 애러 두 가지를 더 학습해보고 실습 문제를 풀어보고자 한다. 그런 다음 6번째 애러에 대해서도 하나 더 학습해볼 수도 있다.
아침에 낮잠을 너무 많이 자서 공부 일정이 많이 지체되었다. 이제 힘을 내서 아침 시간 동안 2주차 학습을 끝마치고자 한다. 오후에는 부모님이 오시니 방 청소도 하고 식사도 하며 좀 놀게 될 것 같다. 그러니 이 시간에 최대한 집중해서 공부를 해보자!
이론 5 - 자주 접하는 에러 코드 4 : Index error
Index error
인덱스는 리스트에서 몇번째 원소를 찾고자 할 때 사용한다. 여기서는 인덱스가 맞지 않을 때 발생하는 애러이다.
이 예제는 첫번째 원소를 리턴해주는 함수이고, first_character에 hello라는 값을 넣어주면 h를 리턴한다.
하지만 빈 문자열이 들어가면 어떻게 될까?
빈 문자열의 첫번째 원소는 0이기 때문에 없다.
이 경우에는 에러를 띄운다. 접근하려는 인덱스가 범위에서 벗어났다는 뜻이다.
string이 주어졌을 때 그 길이를 파악해야 에러가 뜨지 않게 된다. 0번째 글자가 있으려면(index = 0) 인덱스가 0보다는 커야 한다. 0보다 크다면 0번째 글자를 리턴하고, 그렇지 않으면 빈 문자열을 리턴하도록 설정한다.
또는 이렇게 경고 메시지를 띄울 수도 있다.
이 함수는 numbers를 받아서 평균값을 리턴해주는 함수이다.
아무런 숫자가 들어오지 않았다면? 둘다 0이 되어 프로그램은 실행되지 않는다.
이럴 때는 0으로 나누는 상황을 피해야 한다.
numbers에 하나라도 숫자가 있다면 그 값을 리턴하고, 그렇지 않으면 숫자가 없다는 메시지를 띄워야 한다. 0으로 나누어지는 상황을 if문을 통해 피해주는 것이 중요하다.
이론 4 - Import error
이 에러는 큰 프로젝트를 할 때 볼 수 있는 에러이다. math에는 +, - 외에도 루트 같은 연산자를 불러올 수 있다. 루트를 사용하기 위해 squareroot라는 함수를 불러왔다.
이름을 찾을 수 없다는 에러가 뜨는데, 실제로 이 이름이 있는지 확인해봐야 한다.
찾아보면 이 함수는 sqrt임을 알 수 있다. 이름이 틀린 것이다.
실습 2 - 성적 처리 2
첫번째 오류 : value
점이라는 글자를 제거하고 point를 sum에 더해서 그 길이로 나누어 평균을 구하는 문제이다. 그냥은 잘 출력이 되는데 빈 문자열이 들어가면 오류 메세지가 뜬다.
7번째 줄에서 point를 int로 변환할 수 없다는 뜻이다.
score에서 점이라는 글자를 제거했으므로 빈 문자열이 된다. 이럴 때는 point를 빈 문자열인 경우와 아닌 경우를 나누어서 처리하면 된다.
하지만 빈 문제열을 계산하여 평균이 15.0이 되는 것을 볼 수 있다. 원래는 30.0이 나와야 하는데 len의 길이가 2이다.
두번째 오류 : 빈 문자열 처리
변수 하나를 만드는데, 이 변수는 평균 계산에 포함시킨 값만 1씩 올라가도록 하는 변수이다.
point가 빈 문자열이 아닐 때 valid_score_count를 1씩 증가시키도록 한다. 그리고 12번째 줄의 len이 아닌 valid_score_count를 넣어준다.
그러면 첫번째 줄에서는 3점이 잘 출력되었지만 두번째에서는 애러가 뜨는 것을 볼 수 있다.
valid_score_count이 0으로 계산되어 발생하는 오류이다.
세번째 오류 : Zero Division
문제에서 리스트에 정보가 없을 때는 none을 리턴하라고 했으므로 조건식을 하나 추가하면 될 것이다. 아니라면 아래 코드가 실행된다. return을 하면 함수가 끝나기 때문이다.
이 단원의 실습 문제들은 난이도가 높아서 혼자서는 해결하기 힘든 문제들이다. 강의 영상을 보면서 따라하고 나중에 혼자서 풀 수 있도록 연습해야겠다.
두번째 단원 학습을 마치고
이렇게 두번째 단원 학습을 마쳐본다. 강의 영상도 길고 많아서 10시부터 1시간 반 넘게 걸린 것 같다. 에러 코드를 고치는 게 정말 쉽지 않았다. 그래도 어떤 에러가 있는지 살펴보면서 한 단계씩 진행해보니 코드가 읽어졌다.
다음 단원에서는 자주 접하는 에러코드 하나와 에러를 피할 수 있는 방법에 대해서 학습해볼 것이다. 지금 청소를 먼저 해야 하나, 아니면 공부를 더 하다 진행할지 고민이 된다. 이번주에는 깨끗이 정리하며 생활하기로 다짐했는데 여전히 난장판이 되고 말았다.
'웹 · 앱 개발 > 디버깅' 카테고리의 다른 글
에러 읽고 대처하기 4 - 미션 문제 풀기 (0) | 2024.07.30 |
---|---|
에러 읽고 대처하기 3 - 자주 접하는 에러 코드 및 에러 피하기 (0) | 2024.07.30 |
애러 읽고 대처하기 1 - 애러 메시지 읽기 및 자주 접하는 애러코드 3가지 (0) | 2024.07.30 |
디버깅이 필요한 이유 1 - 버그와 예외 (0) | 2024.07.30 |
도전! 디버깅 입문 1 - 디버깅이 필요한 이유 학습 시작 (0) | 2024.07.30 |