프로그램이란?
- 문제를 해결하기 위한 명령을 모아놓은 것 / 곧, 프로그램을 만드는 것
프로그래밍 언어란?
- 컴퓨터가 알아듣는 언어
프로그램의 기본 구조
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]
* 참고사이트
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) ]
- 모르는 건 구글신께!
*스택 오버플로우 활용하기
'자습' 카테고리의 다른 글
[/*elice*/] 03. 리스트-인공지능 활용을 위한 파이썬 기초 (0) | 2020.11.07 |
---|---|
[/*elice*/] 02. 조건문-인공지능 활용을 위한 파이썬 기초 (0) | 2020.11.06 |
[/*elice*/] 01. Python 개론 및 Python 기초 자료형 /인공지능 활용을 위한 파이썬 기초 (0) | 2020.11.06 |
T-아카데미 강의 : Python을 활용한 웹 크롤러 만들기( 하나투어 크롤링) (1) | 2020.07.01 |
[T아카데미] 파이썬 응용분야 (1) | 2020.06.15 |
댓글