본문 바로가기
반응형

Python/점프 투 파이썬26

예외 처리 Preface 오늘은 오류를 발생시키거나 처리·회피하는 방법을 공부했는데, 각 문법의 사용 방법을 익히는 도중 문득 이런 생각이 들었다. '파이썬은 컴파일러가 아닌 인터프리터 언어로, 문장을 한 줄 한 줄 실행시키며 디버깅이 필요한 부분을 즉시 찾아 수정할 수 있는데, 왜 오류를 이렇게 처리할까?' 문서에선 오류를 보류시켜야 하는 경우도 존재하며, 오히려 오류를 일부러 발생시켜야 하는 경우도 존재한다고 하는데, 나는 아직 간단한 코드를 작성한 경험밖에 없어 저자가 하고자 하는 말의 본질을 이해하지 못하는 것 같다. 다양한 코드를 작성해본 후 어느 정도 경험이 쌓이면 해당 코드의 의미를 이해할 수 있을 것이라 생각한다. 1. 오류 처리 방법 try: 4 / 0 except: print('오류입니다.') #.. 2021. 9. 2.
패키지 Preface 패키지는 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다고 하는데, 해당 문서에 있는 예제들이 이해가 잘 되지 않고 무엇보다 Visula Studio와 같은 도구를 사용한다면 파일 관리를 이런식으로 하지 않아도 될 것 같다는 생각이 들었다. 추후에 패키지와 관련된 전문적인 지식이 필요할 때 더욱 자세한 자료들을 통해 다시 한 번 공부할 계획이다. 05-3 패키지 - 점프 투 파이썬 (wikidocs.net) 05-3 패키지 [TOC] ## 패키지란 무엇인가? 패키지(Packages)는 도트(.)를 사용하여 파이썬 모듈을 계층적(디렉터리 구조)으로 관리할 수 있게 해준다. 예를 들어 모듈 이 ... wikidocs.net 2021. 9. 1.
모듈 Preface 디렉터리에 있는 다양한 모듈을 현재 작업중인 파일에 불러와 사용하는 방법을 알아보았다. 이 과정에서 많은 사람들이 공통적으로 사용하는 일반적인 함수는 언제든 불러와 사용할 수 있지만, 사용자가 임의로 제작한 특정 함수들을 다른 파일에 불러와 사용하게 되면 해당 함수의 기능이 정의되어있지 않아 오히려 이해하기 어려울 것 같다는 생각이 들었다. 만약 공동 작업을 할 때 특정 함수를 불러와 작업을 해야 하는 상황이 닥치게 된다면 각 함수마다 주석을 다는 것이 필요해 보인다. 1. 모듈이란? # 파이썬 확장자 .py로 만든 파이썬 파일은 모두 모듈이다. def add(a, b): return a + b def sub(a, b): return a - b 2. 모듈 불러오기 1 import mod1 .. 2021. 9. 1.
클래스 Preface 음... 굉장히 오랜만에 글을 업로드하는 것 같다. 지난 주는 이번 주 개강에 앞서 그간 쌓인 스트레스와 피로를 풀기 위해 제주도로 4박 5일 여행을 다녀왔다. 공부는 잠시 뒤로하고 친한 친구들과 탁 트인 바다를 바라보며 이런 저런 이야기들을 주고받자 마음이 한층 편안해졌다. 집에 있을 땐 몰랐지만, 타지에서 곰곰이 생각해보니 내가 그동안 너무 조급했던 것 같다는 생각이 들었다. 여태껏 진도를 나가기에 급급하여 업로드한 후 제대로 복습 한 번 하지 않은 글들을 보며 서두르지 말고 기본부터 차근차근 쌓아 올리자는 생각을 다시 한 번 마음에 새길 수 있었다. 여행을 마친 후에는 집에 돌아와 방 정리를 했다. 필요없는 물건들을 모두 버린 후 새 가구들을 들여놓았더니 방이 생각보다 훨씬 깔끔해져 .. 2021. 8. 30.
입출력 연습문제 Preface 7번 문제를 풀던 중 도저히 해결 방법이 떠오르지 않아 해설을 참고했다. 해설에선 파일을 열어 전체 내용을 읽은 후 쓰기 모드(w)를 통해 문자열을 고쳤지만, 해당 방법은 기존의 문자열을 모두 삭제한 후 새로운 내용을 작성하는 것이므로, 많은 내용이 담겨있는 파일을 수정할 땐 불필요한 부분까지 교체되는 등의 문제가 발생할 것 같다는 생각이 들었다. 이전 포스팅에서도 언급했듯 함수를 이용한 파일 수정은 실용성과 더불어 몇 가지 문제가 있다고 생각하는데, 현업에서 실제로 파일 수정에 함수를 사용하는지, 사용한다면 그 이유는 무엇인지 궁금하다. 1. 주어진 자연수가 홀수인지 짝수인지 판별해 주는 함수(is_odd)를 작성해 보자. → 답안 def is_odd(num): if num % 2 == .. 2021. 8. 21.
사용자 입출력, 파일 읽고 쓰기 Preface 함수를 이용하여 새로운 파일을 만들고, 내용을 쓰거나 이미 쓰여진 내용을 읽는 방법에 대해 공부했다. 매번 새로운 함수의 사용 방법을 익히는 것이 힘들다는 것을 제외하면 크게 어려운 부분은 없었지만, 코드를 작성하며 '굳이 함수를 사용해서 파일 작업을 해야 할까?'라는 의문이 생겼다. 마우스 클릭 한 번이면 다양한 파일을 자유자재로 넘나들며 필요한 내용을 찾거나 수정할 수 있는데, 왜 함수 코드를 통해 파일에 접근하는 것인지 잘 모르겠다. 또, sys 모듈에 대한 간략한 설명을 읽어봤지만, 이해가 잘 되지 않아 모듈 파트를 배울 때 정확히 짚고 넘어가기로 결정했다. 1. 사용자 입출력 number = input('숫자를 입력하세요: ') print(number, '\n') # input은 .. 2021. 8. 20.
함수 Preface 어제 함수 파트를 처음 공부했을 땐 헷갈리는 부분들이 있어 조금 힘들었는데, 작성했던 코드를 다시 실행시키며 전체적으로 복습을 하자 이전처럼 어렵게 느껴지진 않았다. 한 가지 궁금한 점이라면, def를 사용하여 함수를 만들 때 반환값을 설정하지 않은 상태로 print문을 실행할 시 함께 출력되는 'None'이라는 문자열에 관한 것이다. 물론 프로그램 실행에 문제가 있는 것은 아니지만, 터미널에 출력된 결과를 볼 때마다 지저분하다고 느껴진다. return 명령어를 사용하거나 lambda를 사용하는 것 외엔 이 문제를 해결할 방법이 없을까? 1. 함수 # 매개변수 = 함수에 입력으로 전달된 값을 받는 변수 # 인수 = 함수를 호출할 때 전달하는 입력값 def add(a, b): # 일반적인 함.. 2021. 8. 18.
제어문 연습문제 Preface 이번 연습문제를 풀며 코드엔 정답이 없다는 말이 무엇을 의미하는 것인지 알 수 있었다. 3번 문제를 해결하기 위해 내가 작성한 코드와 해설지에 있는 코드는 출력 결과만 같을 뿐 다른 내용을 담고 있다. 그러나 두 코드 모두 오류 없이 정상적으로 작동하며, 문제가 원하는 정답을 출력한다. 즉, 특정 문제 해결을 위한 코드는 매우 다양하게 작성될 수 있다는 것이다. 그러나 불필요하게 길고 복잡한 코드는 다른 사람이 이해하기(리팩토링하기) 어려우므로 필수적인 내용만을 포함하여 최대한 간결하게 코드를 작성할 수 있도록 고민하는 것이 중요한 것 같다. 1. 다음 코드의 결괏값은 무엇일까? a = "Life is too short, you need python" if "wife" in a: print.. 2021. 8. 18.
for문 Preface 며칠 동안 if문과 while문 그리고 for문까지 총 3가지의 제어문을 공부했다. if문과 while문은 비교적 쉽게 이해할 수 있었는데, 오늘 배운 for문은 생각보다 꽤 복잡했다. 기존의 계획은 제어문 공부를 마친 후 바로 연습문제를 풀어보는 것이었지만, 밤낮이 바뀌어 머리가 몽롱한 탓인지 오늘따라 집중이 되지 않아 지금 상태에서의 공부는 별 의미가 없을 것 같다는 생각이 들었다. 다음날 천천히 복습하며 제어문을 완벽히 이해한 후 연습문제를 풀어 볼 계획이다. 1. for문 test_list = ['one', 'two', 'three'] for a in test_list: print(a) print('\n') marks = [90, 25, 67, 45, 80] number = 0 fo.. 2021. 8. 17.
while문 Preface while문을 사용하여 코드를 작성하는 것은 앞서 공부한 if문을 사용하는 것 보다 조금 까다로웠다. 예제를 바탕으로 다양한 코드를 작성해 봤는데, 조건을 잘못 설정하거나 break를 사용하지 않아 무한루프에 빠져 프로그램이 멈추기도 했다. 그래도 코드를 몇 번 작성해 보니 익숙해져 짝수를 입력할 때까지 결과를 출력하는 코드도 만들어봤다. 또, ctrl + c 키를 누르면 인터럽트가 발생하여 실행 중인 코드가 멈춘다는 것도 알게 되었다. 1. while문 treeHit = 0 while treeHit < 10: treeHit = treeHit + 1 # (treeHit += 1)과 같음 print(f'나무를 {treeHit}번 찍었습니다.') if treeHit == 10: print('나.. 2021. 8. 17.