[U] Week 1 Day 2

나며기·2021년 1월 19일
0

부스트캠프 AI Tech

목록 보기
3/79
post-thumbnail

강의 복습 내용

[DAY 2] 파이썬 기초 문법

Variables

  • 변수 : 데이터(값)를 저장하기 위한 메모리 공간의 프로그래밍 상 이름. 변수는 메모리 주소를 가지고 있고 변수에 들어가는 값은 메모리 주소에 할당됨.
  • 변수 이름 작명법
    • 알파벳, 숫자, 언더스코어(_) 로 선언 가능.
    • 변수명은 의미 있는 단어로 표기하는 것이 좋다.
    • 변수명은 대소문자가 구분된다.
    • 특별한 의미가 있는 예약어는 쓰지 않는다.
  • 기본 자료형
    • 정수형 (integer) : 양/음의 정수 (ex. 1,2,3,100, -9)
    • 실수형 (float) : 소수점이 포함된 실수 (ex. 10.2, -9.3, 9.0)
    • 문자형 (string) : 따옴표 ("")에 들어가 있는 문자형 (ex. abc, a20abc)
    • 논리 자료형 (boolean) : 참 또는 거짓 (ex. True, False)
  • 사칙연산과 같은 기호들을 연산자라고 칭함.
  • 연산자에 의해 계산이 되는 숫자들을 피연산자라고 칭함.
  • 연산의 순서는 수학에서 연산 순서와 같음.
  • 단순한 실수도 이진수로 변환하면 무한소수가 된다. 따라서 컴퓨터의 반올림 오차를 주의하자!
  • 패킹 : 한 변수에 여러 개의 데이터를 넣는 것.
  • 언패킹 : 한 변수의 데이터를 각각의 변수로 반환하는 것.

Function and Console I/O

  • 함수의 개요
    • 어떤 일을 수행하는 코드의 덩어리
    • 반복적인 수행을 1회만 작성 후 호출
    • 코드를 논리적인 단위로 분리
    • 캡슐화 : 인터페이스만 알면 타인의 코드 사용
    • parameter 유무, 반환 값(return value) 유무에 따라 함수의 형태가 다름
parameter 없음parameter 존재
반환 값 없음함수 내의 수행문만 수행parameter를 사용, 수행문만 수행
반환 값 존재parameter없이, 수행문 수행 후 결과값 반환parameter를 사용하여 수행문 수행 후 결과값 반환
  • print문은 기본적인 출력 외에 출력의 형식을 지정 가능
    1. %-format
    2. str.format() 함수
    3. f-string

Conditionals and Loops

  • 조건문 : 조건에 따라 특정한 동작을 하게하는 명령어
  • 조건문은 조건을 나타내는 기준과 실행해야 할 명령으로 구성됨
  • 조건의 참, 거짓에 따라 실행해야 할 명령이 수행되거나 수행되지 않음
  • 비교 연산자
비교 연산자비교 상태설명
x < y~보다 작음x과 y보다 작은지 검사
x > y~ 보다 큼x과 y보다 큰지 검사
x == y같음x와 y과 같은지 검사
x is y같음값과 메모리 주소가 같은지 검사
x != y같지 않음x와 y과 다른지 검사
x is not y같지 않음값과 메모리 주소가 다른지 검사
x >= y크거나 같음x과 y보다 이상인지 검사
x <= y작거나 같음x과 y보다 이하인지 검사
  • 삼항 연산자 : 조건문을 사용하여 참일 경우와 거짓일 경우의 결과를 한줄에 표현
  • 반복문 : 정해진 동작을 반복적으로 수행하게 하는 명령문
  • 반복문은 반복 시작 조건, 종료 조건, 수행 명령으로 구성됨
  • 반복문 역시 반복 구문은 들여쓰기와 블록으로 구분됨
  • 반복문 변수명 : 임시적인 반복 변수는 대부분 i, j, k로 정함
  • 반복문의 대부분은 0부터 반복을 시작
  • break : 특정 조건에서 반복 종료
  • continue : 특정 조건에서 남은 반복 명령 생략
  • else : 반복 조건이 만족하지 않은 경우, 반복 종료 시 1회 수행
  • 디버깅
    • 코드의 오류를 발견하여 수정하는 과정
    • 오류의 원인을 알고 해결책을 찾아야 함
    • 문법적 에러를 찾기 위한 에러 메시지 분석
    • 논리적 에러를 찾기 위한 테스트도 중요
  • 모든 문제는 Google + stack overflow로 해결 가능

String and advanced function concept

  • 문자열 : 시퀀스 자료형으로 문자형 data를 메모리에 저장
  • 영문자 한 글자는 1byte의 메모리 공간을 사용
  • 각 타입 별로 메모리 공간을 할당 받은 크기가 다름
종류타입크기표현 범위 (32bit)
정수형int4byte-2^31 ~ 2^31-1
정수형long무제한무제한
실수형float8byte약 10^-308 ~ 10^308
  • 메모리 공간에 따라 표현할 수 있는 숫자 범위가 다름
  • 데이터 타입은 메모리의 효율적 활용을 위해 매우 중요
함수명기능
len(a)문자열의 문자 개수를 반환
a.upper()대문자로 변환
a.lower()소문자로 변환
a.capitalize()첫 문자를 대문자로 변환
a.titile()제목형태로 변환, 띄워쓰기 후 첫 글자만 대문자
a.count('abc')문자열 a에 'abc'가 들어간 횟수 반환
a.find('abc')문자열 a에 'abc'가 들어간 위치(오프셋) 반환
a.rfind('abc')문자열 a에 'abc'가 들어간 위치(오프셋) 반환
a.startswith('ab'c)문자열 a는 'abc'로 시작하는 문자열여부 반환
a.endswith('abc')문자열 a는 'abc'로 끝나는 문자열여부 반환
a.strip()좌우 공백을 없앰
a.rstrip()오른쪽 공백을 없앰
a.lstrip()왼쪽 공백을 없앰
a.split()공백을 기준으로 나눠 리스트로 반환
a.split('abc')abc를 기준으로 나눠 리스트로 반환
a.isdigit()문자열이 숫자인지 여부 반환
a.islower()문자열이 소문자인지 여부 반환
a.isupper()문자열이 대문자인지 여부 반환
  • 특수 문자 : 문자열을 표시할 때, 백슬래시 \를 사용하여 키보드로 표시하기 어려운 문자들을 표현함
문자설명
\ 다음 줄과 연속임을 표현
\\ \ 문자 자체
`' 문자
\"" 문자
\b백 스페이스
\n줄 바꾸기
\tTAB 키
\eESC 키
  • 함수에서 parameter를 전달하는 방식
    1. 값에 의한 호출 (Call by Value) : 함수에 인자를 넘길 때 값만 넘김. 함수 내에 인자 값 변경 시, 호출자에게 영향을 주지 않음.
    2. 참조의 의한 호출 (Call by Reference) : 함수에 인자를 넘길 때 메모리 주소를 넘김. 함수 내에 인자 값 변경시, 호출자의 값도 변경됨.
    3. 객체 참조에 의한 호출 (Call by Object Reference) : 전달된 객체를 참조하여 변경 시 호출자에게 영향을 주나, 새로운 객체를 만들 경우 호출자에게 영향을 주지 않음.
  • 지역변수 (local variable) : 함수내에서만 사용
  • 전역변수 (Global variable) : 프로그램 전체에서 사용
  • 재귀함수 (recursive Function)
    • 자기자신을 호출하는 함수
    • 점화식과 같은 재귀적 수학 모형을 표현할 때 사용
    • 재귀 종료 조건 존재, 종료 조건까지 함수 호출 반복
  • Type hints의 장점
    1. 사용자에게 인터페이스를 명확히 알려줄 수 있다.
    2. 함수의 문서화시 parameter에 대한 정보를 명확히 알 수 있다.
    3. mypy 또는 IDE, linter 등을 통해 코드의 발생 가능한 오류를 사전에 확인할 수 있다.
    1. 시스템 전체적인 안정성을 확보할 수 있다.
  • 함수 작성 가이드 라인
    • 함수는 가능하면 짧게 작성할 것
    • 함수의 이름에 함수의 역할, 의도가 명확히 들어날 것
    • 하나의 함수에는 유사한 역할을 하는 코드만 포함할 것
    • 인자로 받은 값 자체를 바꾸진 말 것
  • 파이썬 코딩 컨벤션
    • 명확한 규칙은 없음
    • 때로는 팀마다, 프로젝트마다 따로
    • 중요한 건 일관성!!!
    • 읽기 좋은 코드가 좋은 코드
    • 들여쓰기는 Tab or 4 Space 논쟁!
    • 일반적으로 4 Space를 권장함
    • 중요한 것은 혼합하지 않으면 됨
    • 한 줄은 최대 79자까지
    • 불필요한 공백은 피함
    • =연산자는 1칸 이상 안 띄움
    • 주석은 항상 갱신, 불필요한 주석은 삭제
    • 코드의 마지막에는 항상 한 줄 추가
    • 소문자l, 대문자O, 대문자I 금지
    • 함수명은 소문자로 구성, 필요하면 밑줄로 나눔

피어 세션 정리

  • 조교님 소개
  • 강의 리뷰 및 Q&A
  • 작일 개인 학습 공유
  • 그라운드 룰 추가 및 변경
  • 피어세션 및 스터디 방향에 대한 회의

과제 진행 상황 정리

Practice

Homework - Assignment Practice

리뷰 : 과제를 제출하는 방법을 배우는 것으로, 어렵지 않게 해결했습니다.

basic_math

Homework - Basic Math

리뷰 : max, min, mean, median을 구현하는 것으로, 내장 함수를 사용하여 해결했습니다.

text processing

Homework - Text Processing I

리뷰 : 문자열을 다루는 방법을 배우는 것으로, 어렵지 않게 해결했습니다.

text processing 2

Homework - Text Processing II

리뷰 : 마찬가지로 문자열을 다루는 방법을 배우는 것으로, 어렵지 않게 해결했습니다.

Baseball

Homework - Baseball

리뷰 : 과제 자체는 그다지 어렵지 않았으나, 요구하는 것을 정확하게 구현하는 것에 있어서 꽤 애를 먹었습니다. 그 증거로, 다른 과제들은 1, 2번 만에 통과했지만, 해당 과제는 3번 만에 통과했습니다. 이렇게 많이 시도하게 된 이유는 다음과 같습니다.
1. is_duplicated_number()에서 True와 False를 반대로 생각함.
2. 0을 입력하면 종료해야 하는 것을 고려하지 않음.
과제의 지문을 꼼꼼하게 읽었더라면, 하지 않았을 실수입니다. 앞으로는 이러한 실수로 시간을 낭비하는 일이 없도록, 꼼꼼하게 읽는 습관을 길러야겠습니다.

총평

4시간의 강의와 5개의 과제, 갑작스레 늘어난 학습량으로 당황했던 하루였습니다.
그래도 본격적으로 시작한다는 생각에 힘들기보다는 재미있었습니다.
특히, 혼자서는 깨닫기 어려운 코딩 컨벤션에 대해서 배울 수 있어서 좋았습니다.

약간의 걱정거리가 있다면, 피어세션의 방향성이 명확하지 않다는 점입니다.
시작한지 얼마 안됐기 때문에, 급한건 아니지만 그래도 다음 피어세션 시간까지 자료를 준비해볼까 합니다.

오늘보다 더 성장한 내일의 저를 기대하며, 내일 뵙도록 하겠습니다.

읽어주셔서 감사합니다!

profile
PLUS ULTRA

0개의 댓글