자습

[구름 EDU] 파이썬 자습 (김왼손의 미운코딩새끼)

빵으니 2020. 7. 2. 18:32

프로그램이란?

- 문제를 해결하기 위한 명령을 모아놓은 것 / 곧, 프로그램을 만드는 것

 

프로그래밍 언어란?

- 컴퓨터가 알아듣는 언어

 

프로그램의 기본 구조

1. 순차 : 정해진 순서대로 명령을 수행하는 것 (위에서 부터 차례로)

2. 선택 : 조건에 따라 흐름을 바꾸는 것

3. 반복 : 같은 명령을 조건이나 횟수에 따라 반복하는 것

 

 

*스택 오버플로우 : 개발자들의 네이버 지식인


print( )

- 명령어 결과 출력

 

input( )

- 실행 중 사용자의 입력을 받는 함수

- 항상 문자열로 받아 옴

- 프로그램에게 정보 전달 가능

- 괄호 안에 문자열을 넣으면 프롬프트의 역할 수행

- 입력 받은 값을 변수에 저장할 수 있다.


변수 (Variable)

- 변수에는 값을 할당할 수 있다.

- 파이썬에서 = 는 할당을 의미

- 할당된 값은 변할 수 있다.

- 글자나 underbar를 사용

- 대, 소문자 구분


< 자료형 종류 (Data type) >

* type( ) 함수 - 자료형 확인 가능한 함수

 

숫자형(Numeric)

- 숫자로 이루어진 자료형

- 정수나 실수 등을 다룰 수 있음

- 연산 가능

 

문자열 (String)

- 문자로 이루어진 자료형

- 큰 따옴표, 작은 따옴표로 구분

 

논리형 (Boolean)

- 참(True), 거짓(False)

- 비교나 논리연산자의 결과

 

리스트 (List)

- [ ]

- 여러 값을 모아서 저장

- 값을 변경할 수 있으며, 순서가 있음

 

튜플 (Tuple)

- ( )

- 여러 값을 모아서 저장

- 값을 변경할 수 없으며, 순서가 있음

 

딕셔너리 (Dictionary)

- { key : value }

- 관련된 정보를 서로 연관시켜 놓은 것

- 키와 값의 쌍으로 이루어져있음

- 리스트, 튜플, 딕셔너리를 콘테이너라고 함 (여러 값 저장할 수 있으므로)

 

자료형 변환하기

- 자료형끼리 변환할 수 있는 함수도 있다

- int( ) : 정수형으로 변환

- float( ) : 실수형으로 변환

- str( ) : 문자열로 변환

- list( ) : 리스트로 변환


주석 (Comment)

- #

- 사람을 위한 설명 메모/ 컴퓨터는 인식 X


[ 문자열(String) ]

- 문자를 나열한 것

- 값을 변경할 수 없고, 순서가 있다.

- " " , ' ' 로 구분

- """ """, ''' ''' 세개씩 쓰면 여러 줄 저장 가능

- 문자열 안에 큰따옴표나 작은따옴표를 넣고 싶으면 서로 다른 따옴표를 함께 사용

 

포맷팅(Formating)

- % 연산자를 이용해 문자열에 숫자, 문자열 등을 대입

- 문자열을 자유롭게 표현하는 방법

- %d : 정수형 숫자 대입 가능

- %f : 실수형 숫자 대입 가능

- %s : 문자열 대입 가능

 

'{ }'.format( )

- 포맷팅을 수행하는 문자열의 메소드

- { } 중괄호를 이용해 값을 대입

- % 연산자보다 파이썬스러운 방법

- 괄호 안에 숫자를 넣어 순서 지정 가능

 

인덱싱( Indexing )

- 위치(index)를 이용해 각 문자에 접근 가능

- 위치는 0 부터 시작

- 공백도 포함

- 가장 뒤의 값을 -1부터 해서 거꾸로 세어 감.

- 리스트 자료형에서도 비슷

 

슬라이싱(Slicing)

- 문자열에서 여러 값을 한꺼번에 잘라 옴

- 콜론(:)을 이용해 여러 값을 한꺼번에 가져 올 수 있음

- 기존 문자열을 그대로 두고 복사해서 사용

앞이나 뒤를 생략할 수도 있다

 

<메서드>

- 특정한 기능을 수행하기 위한 코드를 모아두고 이름을 붙인 것을 함수라 함

- 메서드는 특정 객체만 사용할 수 있는 함수

 

String.split( )

- 문자열을 공백 기준으로 분리하는 메서드

- split(',') : 괄호 안에 구분자를 넣어주면 그 구분자를 기준으로 문자열 분리

 

독스트링(Docstring)

- 문서화 문자열(Documentation string)

- 함수가 어떤 일을 수행하는지 설명

- """ """  혹은 ''' ''' 식으로 따옴표 세 개 사용

end

- end : print() 함수에서 출력의 끝을 지정

- 파이썬에서는 줄 바꿈(\n)이 기본 값

- end='\t' 등으로 출력의 끝 부분 변환 가능

 

이스케이프 코드(Escape code)

- 특정한 기능을 수행하기 위해 미리 정해둔 문자 조합

- \n : new line

- \t : tab


[ 리스트 ( List ) ]

- [ ] 

- 여러 값을 한꺼번에 저장 가능

- 값들은 변경할 수 있고(mutable) 순서가 있다 

- 가변과 불변

   - 가변(mutable) : 값을 변경할 수 있다. 리스트, 딕셔너리 등이 해당

   - 불변(immutable) : 값을 변경할 수 없다. 문자열, 튜플 등이 해당

 

list.append( )

- 리스트의 메서드 append()를 사용해서 값을 추가할 수 있음

- 리스트가 기존에 없다면 append로 값을 추가할 순 없음

 

인덱싱(Indexing)

- 문자열의 인덱싱과 유사

- 위치를 이용해 값에 접근하는 것을 인덱싱이라 함

* del[ ] : 인덱스 삭제 메서드

 

슬라이싱(Slicing)

- 문자열의 슬라이싱과 유사

- [원하는 인덱스 : 원하는 인덱스]

 

list.sort()

- 리스트 안의 값을 정렬

 

list.count()

- 리스트 안에서 해당 값의 개수를 셈

 

* len( )

- 리스트의 내부 요소 갯수를 세 주는 함수 (메서드X)


[ 튜플 ( Tuple ) ]

- ( )

- 리스트와 유사하지만, 값을 변경할 수 없다 (immutable)

- 괄호를 쓰지 않아도 튜플임

 

패킹/ 언패킹 (Packing / Unpacking)

- 패킹 : 여러 개의 값을 묶어 튜플로 저장하는 것

- 언패킹 : 묶여 있는 값을 풀어놓는 것 

 

- 두 변수의 값을 서로 바꿀 때도 사용 가능


[ 반복문 ]

- 반복되는 작업 처리

- 파이썬에서는 for, while 두 가지 반복문이 있음

- 컨테이너 안의 값을 전부 순회 할 때까지 반복

- 반복하는 부분을 코드블럭이라 함

- 코드블럭을 구분하기 위해 콜론(:)들여쓰기(4칸) 사용

 

for 변수 in 컨테이너 :

    실행할 명령 1 (코드 블럭)

    실행할 명령 2

 

range()

- for와 함께 자주 사용되는 내장함수

- range(stop)은 0부터 stop 전까지의 숫자를 나열 (만약 100000까지 돌리려면 다 리스트에 넣어서 돌릴 순 없으니까)

- range(start, stop)은 start부터 stop 전까지의 숫자를 나열

 

중첩 반복문

- 구구단 2~9단까지 출력 가능

 

컴프리헨션(Comprehension) / 표현식

- 리스트를 만드는 강력하고 간결한 방법

- 초보자에게는 쉽지 않지만 많이 사용됨

반복문으로 홀수 뽑아내기
컴프리헨션 사용해서 간단하게 홀수 뽑기


[ 연산자 ]

 

할당 =

- 수학에서 =은 같다는 뜻이지만, 파이썬에서 =은 할당 연산자

- 오른쪽의 값을 왼쪽의 변수에 할당

 

복합 할당 연산자 +=   -= 

- count += 1 은 count = count + 1 과 같은 뜻

 

산술 연산자 + - * / 

- 숫자끼리 연산할 수 있게 하는 연산자

 

특수 연산자

- ** 제곱

-  // 나누기의 몫

- % 나머지 연산자

 

문자열 연산자

- 문자열끼리 연결 +

- 문자열을 해당 수만큼 반복 *

 

비교 연산자

- 비교의 결과는 참(True), 거짓(False)

- == / != / > / < / >= / <=

 

논리 연산자(Logical)

- 파이썬의 논리 연산자에는 and, or, not이 있음

- and : 둘 다 True일때만 True

- or : 한 쪽이라도 True면 True

- not : True면 False, False면 True   (not False == True / not True == False)

 

멤버쉽 연산자(Membership)

- in 과 not in 사용

- 리스트, 튜플 등의 안에 해당 값이 있는지 확인


[ 조건문 ( if ) ]

- 조건이 참인지 거짓인지 판단

- 조건에 따라 처리의 흐름이 바뀜

- if 키워드 사용

   - 참일 경우 코드블럭 실행

   - 거짓일 경우 코드블럭 넘어감

 

if 조건 : 

    실행할 명령 1(코드블럭)

    실행할 명령 2

 

else, elif

- if와 함께 사용

- else : 이전의 if나 elif가 모두 거짓일 경우 else로 넘어감

- elif : 이전의 if나 elif가 거짓일 경우 elif의 조건문으로 넘어감


[ 반복문 ] Loop

- 반복작업 처리

- 코드 양이 줄어들고 읽기 쉬워짐

- while 조건을 기준으로 반복

- 무한루프 조심 (Ctrl + C 로 강제종료)

 

while 조건(T/F):

    실행할 문장 1(코드블럭)

    실행할 문장 2

 

 

continue, break

- while문에서 사용되는 키워드

- continue : 다시 조건으로 돌아감

- break : 반복문 종료


[ 딕셔너리 ( Dictionary) ]

- { }

- 리스트와 튜플처럼 여러개의 값을 함께 모아 관리할 수 있지만, 관련된 정보를 연관시킨다는 것이 차이점

- 키(key) 와 값(value)을 쌍으로 갖는 자료형

- 리스트가 값을 다루기 위해 인덱스를 사용한다면, 딕셔너리는 키를 사용

 

 

<딕셔너리 메서드> (딕셔너리만 사용할 수 있는 함수)

 

dict.values()

- 딕셔너리에서 값만 추출

 

dict.keys()

- 딕셔너리에서 키만 추출

 

dict.items()

- 딕셔너리에서 키와 값 쌍을 추출


[ 함수 ] 

- 반복되는 코드를 묶어서 다시 쓸 수 있게 이름붙여 놓은 것. 필요할 때마다 불러서 사용 가능

- 앞서 사용한 print(), input() 등도 모두 함수

- 입력 값 -> [함수] -> 출력 값

- 파이썬 함수 종류 : 내장함수(파이썬 기본 제공) / 모듈함수(import) / 사용자 정의 함수(직접 만드는 함수)

사용자 정의 함수 형태

def 함수이름(인자(혹은 매개변수)1, ...) : 
    실행할 명령 1
    실행할 명령 2

    return 결과

- 함수에게 전달하는 값을 인자, 혹은 매개변수라고 함

- 함수에게 받아오는 값을 리턴 값, 반환 값, 결과 값이라 함

- 인자값이나 결과값은 있어도 되고 없어도 됨

 

[ 함수를 사용하는 이유 ]

- 필요할 때마다 다시 사용 가능

- 반복되는 코드를 한 곳에 모아놨기 때문에 코드를 관리 용이해짐

- 각각의 함수들을 조립해서 사용 가능 ( *함수를 모아놓은 것을 모듈이라 함)

 

[ 여러 개의 값을 return해주기 ] 

- 콤마(,)를 사용해 여러 개의 값을 돌려받을 수 있다

def 함수이름(인자(혹은 매개변수)1, ...) : 
    실행할 명령 1
    실행할 명령 2

    return 결과1, 결과2

- 함수가 여러 개의 값을 리턴할 때는 하나의 튜플로 묶어서 전달 / 아래와 같이 리턴값을 my_add, my_mul 에 각각 담아주면서 리턴하면 자동으로 언패킹이 되어 각각의 변수에 값이 담김


[ 모듈(Module) ]

- 비슷한 기능의 함수들을 모아놓은 파일이라고 생각하면 됨

- 직접 만들 수도 있고, 파이썬 제공 모듈, 혹은 다른 사람이 만들어놓은 모듈을 가져와서 쓸 수 있다

- import 키워드로 모듈을 가져와 사용

- 마침표(.)를 이용해 함수 사용

import 모듈이름

- 파이썬은 제공하는 라이브러리들이 많아서 구현할 필요 없이 바로 가져다 쓸 수 있다.

 

< random 모듈> 

- 난수를 만들거나 무작위와 관련된 함수를 포함 (ex. random 모듈의 choice함수)

- random 모듈이 포함하고 있는 함수

 1) random.choice() : 리스트의 값 중 하나를 랜덤하게 선택

 

 2) random.sample() : 리스트의 값 중에서 지정한 개수만큼 랜덤하게 선택 (중복 X)

    * print(random.sample(range(1, 46), 6)) 하면 1~46 까지 6개의 숫자를 랜덤하게 뽑는 로또번호생성기를 만들 수도          있음

 

 3) random.randint() : 특정 범위의 정수 중 하나를 랜덤하게 선택


[ 객체 ] 

- 현실의 물건, 물체, 사물을 컴퓨터 안에 재현하는 것

- 함수와 데이터를 한꺼번에 묶어둔 것

- 파이썬의 대부분의 것들은 객체

- 예시) 통기타의 객체

   - 데이터 : 이름, 색깔, 종류

   - 함수 : 핑거스타일로 연주하기, 스트럼으로 연주하기

- 예시) 게임 속 용사 객체

   - 데이터 : 성별, 이름, 레벨

   - 함수 : 앞으로 가기, 떄리기, 점프 뛰기

- 예시 ) my_list = [1, 2, 3] 은 데이터와 함수(이 리스트가 취할 수 있는 행동 / 예를 들면 append)를 가지고 있다

-> my_list.append(4) ---> my_list = [1, 2, 3, 4]

 

* 참고사이트

http://www.pythontutor.com/

 

Python Tutor - Visualize Python, Java, C, C++, JavaScript, TypeScript, and Ruby code execution

VISUALIZE CODE AND GET LIVE HELP Learn Python, Java, C, C++, JavaScript, and Ruby Python Tutor helps people overcome a fundamental barrier to learning programming: understanding what happens as the computer runs each line of code. Write code in your web br

www.pythontutor.com


[ 코딩 스타일 ]

- 코드를 작성하다 보면 나보다 다른 사람들이 보는 경우가 더 많음

- 일관된 기준을 가지고 코드를 작성하면 다른 사람들과의 협업에 도움이 됨

- PEP8은 파이썬 제작자인 귀도 반 로썸이 제안하는 코딩 스타일 가이드

https://www.python.org/dev/peps/pep-0008/

 

PEP 8 -- Style Guide for Python Code

The official home of the Python Programming Language

www.python.org

* 번역본

https://b.luavis.kr/python/python-convention

 

Luavis' Dev Story - Python PEP 8

Python PEP 8 한글 번역

b.luavis.kr


[ 구글링 방법 (Googling) ] 

- 모르는 건 구글신께!

*스택 오버플로우 활용하기