[오늘의 일지]
파이썬의 배경지식
파이썬 익숙해지기 - 변수와 자료형, 입력과 출력, 조건문, 반복문, 함수
[상세 내용]
파이썬의 배경지식
파이썬의 역사
- Programming : 보통 컴퓨터 시스템을 구통시킬 때 인간이 컴퓨터에 명령을 내리는 것을 말하며 프로그램을 만드는 모든 작업을 개발이라고 칭하기도 합니다.
- Python : 컴퓨터 시스템을 구동시키기 위한 프로그래밍 언어 중 하나이며 가장 활용도가 높고 쉬운 언어로 알려져 있습니다. 또 MATLAB, R과 같은 도메인 특화 언어와 Java, C 같은 범용 언어의 장점을 고루 갖추고 있기에 높은 확장성과 다른 언어나 라이브러리에 쉽게 연동이 가능하다는 장점을 가지고 있습니다. 연동 가능한 라이브러리에는 통계, 머신러닝, 자연어, 이미지, 시작화 등을 포함하고 있습니다.
- Python 활용 분야 : 웹 제작, 애플리케이션 제작, 게임 제작, 인공지능 제작 등 많은 활용 분야가 있습니다.
- Python Editor : 여기서 에디터란 소스 코드가 들어 있는 파일을 편집할 수 있는 프로그래밍 툴을 의미합니다.
에디터의 종류 : Pycharm, Jupyter notebook, Visual Studion Code, IDLE, Google Colaboratory(Colab) 등이 있는데 수업에서는 주로 Colab을 통해 실습을 한다고 하셨습니다. 아래 에디터 홈페이지를 남겨둘 테니 각각의 장점들을 확인해 보면 좋을 거 같습니다.
파이썬 익숙해지기
변수와 자료형
- 변수(variable) : 변수는 어떠한 값(value)을 담는 저장 공간과 그에 상응하는 이름을 의미합니다. 그 말은 즉슨 변할 수 있는 것을 상자에 담는다는 것이라고 볼 수 있습니다. 변수에 줄 수 있는 값에는 숫자, 문자 다른 데이터 탑입들이 모두 가능하고 변수를 만들고 나면 변수를 저장하는 메모리를 자동으로 생성하고 주소가 생성됩니다.
- 변수의 이름 : 변수를 선어 할 때 몇 가지 규칙이 있습니다. 규칙은 다음과 같습니다.
영문자 혹은 _(underscore)로 시작
대소문자 구분
숫자로 시작할 수 없음
특수 문자(+, -, %, &)는 사용할 수 없음
변수 이름에 공백이 있으면 안 됨(보통 _로 이어줌)
파이썬의 예약어(if, while, for 등)는 사용할 수 없음
- 변수 선언 : A = 1이라고 하는 것은 '1을 A라는 상자(변수)에 담아줘'라는 의미로 이것을 '변수를 선언한다'라고 표현합니다. 특히 파이썬 환경에서는 '='라는 기호가 선언의 의미를 가지고 있고 같다는 의미의 기호는 '=='로 표시됩니다.
- 자료형 : 자료형은 프로그램에서 표현하고 저장하는 데이터 유형을 의미하는데 종류는 크게 순서 자료형과 비순서 자료형으로 구분할 수 있습니다.
- 순서 자료형 : 숫자(number), 문자열(strings), 리스트(Lists), 튜플(tuples)
- 숫자(number) :숫자형은 숫자 형태로 이루어진 자료형으로 정수, log형 정수, 실수, 복소수 등이 있다.
정수(integer) : 소수점이 없는 숫자
실수, 부동 소수점(floating point) : 소수점이 있는 숫자
- 데이터 타입 출력
# type()은 괄호 안에 입력한 자료의 유형을 알려주는 함수
# int : 정수
# float : 실수
- 연산자
# 사칙 연산자 : 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/)
# 정수 나누기 연산자 : 나머지(%)
# 나머지 연산자 : 몫(//)
# 제곱 연산자 : 제곱(**)
- 관련 함수(자주 사용하는 파이썬 내장 함수)
# int() : 숫자나 문자열을 정수형(integer)으로 변환
# float() : 숫자나 문자열을 실수형(float)으로 변환
# abs() : 절대값 출력
# pow() : 제곱 출력
- 문자열(strings) : 문자들의 모임
- 문자열 만드는 방법
# 큰 따옴표로 문자열 만들기
# 작은 따옴표로 문자열 만들기
# 문자열 내부에 따옴표 넣기
# 이스케이프 문자를 사용해 문자열 만들기
# 이스케이프 문자는 역슬래시(\) 기호와 함께 조합해서 사용하는 특수문자를 의미
# \와 함께 사용하면 '문자열을 만드는 기호'가 아니라 '단순한 따옴표'로 인식
# 여러 줄 문자열 만들기
# 줄바꿈 없이 문자열 만들기
- 이스케이프 문자
# \n : 줄바꿈
# \t : 탭
# \\: 역슬래시
# \' : 작은 따옴표
# \" : 큰 따옴표
- 문자열 연산자 : 문자열도 숫자형처럼 연산 가능합니다. 연결 연산자 (+)와 반복 연산자 (*)를 사용할 수 있습니다.
- 인덱싱과 슬라이싱
- 인덱싱
문자열 내부의 문자 하나를 선택하는 연산자
문자 선택 연산자 ([ ])
대괄호 [ ] 안에는 선택할 문자의 위치를 지정하며, 이 숫자를 인덱스(index)라고 부름
순방향 인덱스 : 0부터 시작
역방향 인덱스 : -1부터 시작
문자열[인덱스]로 호출
- 슬라이싱
문자열의 특정 범위를 선택할 때 사용하는 연산자
문자열 범위 선택 연산자 ([:])
문자열[인덱스 1 : 인덱스 2]로 호출
파이썬은 '마지막 숫자를 포함하지 않음'으로 적용
인덱스 1 이상부터 인덱스 2 미만으로 적용
- 포맷팅(formatting) : 문자열 안에 어떤 값을 삽입하는 방법
% 연산자 포맷팅
# 문자열 포맷 코드에 맞춰 바로 숫자와 문자를 대입할 때 사용
# 숫자(정수) 대입 : %d
# 숫자(실수) 대입 : %f
# 문자 1개 대입 : %c
# 문자열 대입 : %s
- format() 함수 포맷팅
중괄호{ }를 포함한 문자열 뒤에 도트(.)를 찍고 format( ) 함수 사용
중괄호 개수와 format( ) 함수 괄호 안의 매개변수 개수는 동일
함수를 사용하면 문자열의 {} 기호가 format( ) 함수 괄호 안에 있는 매개변수로 차례로 대치
- 문자열 관련 함수
# len(x) : 문자열 길이 출력
# split() : 문자열 나누기
# count(x) : 문자 개수 세기
# replace('a', 'b') : 문자열 바꾸기
# find('a') : 위치 알려주기
# upper() : 소문자를 대문자로 바꾸기
# lower() : 대문자를 소문자로 바꾸기
# join(x) : 문자열 삽입
- 리스트(Lists) : 지금까지 활용한 숫자나 문자가 '개별적인 자료'였다면 리스트는 '여러 자료들을 모아서 사용할 수 있는 형태의 자료'로서 여러 요소를 하나의 변수로 사용하고 싶을 때 사용합니다. 또한 리스트는 값을 변경하거나 삭제할 수 있습니다. 이 특징은 튜플과는 다른 큰 차이점이라고 할 수 있습니다.
- 리스트 선언
리스트를 생성하는 방법은 대괄호[ ]에 자료를 쉼표로 구분하여 입력
대괄호[ ] 내부에 넣는 자료를 요소라고 부르며 영어로는 element라고 명칭
- 리스트의 인덱싱과 슬라이싱
리스트 기호인 대괄호[ ] 안에 들어가는 숫자를 인덱스(index)라고 부름
리스트 안에 있는 요소를 각각 사용하려면 리스트 이름 바로 뒤에 대괄호[ ]를 입력하고
자료의 위치를 나타내는 숫자를 입력
파이썬은 0부터 시작
- 리스트의 연산자 : '+ ' (덧셈), ' * '(반복), len(길이 구하기)
- 리스트 관련 함수
# sort() : 리스트 정렬
# reverse() : 리스트 뒤집기
# append(x) : 리스트에 요소 추가
# extend(x) : 리스트 확장
# insert(a, b) : 리스트 요소 삽입, 리스트 a번째 위치에 b를 삽입
# remove(x) : 리스트 요소 제거
# pop() : 리스트 요소 끄집어내기
# count(x) : 리스트에 포함된 요소 x의 개수 세기
- 튜플(tuples) : 리스트는 [ ]로 생성하지만 튜플은 ( )로 생성합니다. 리스트와 다른 점은 리스트는 그 값의 생성, 삭제, 수정이 가능하지만 튜플은 값을 추가, 삭제, 수정할 수 없습니다. 그러므로 수정해서는 안 되는 값을 저장할 때 사용하는 것이 좋습니다.
- 튜플 생성 : 괄호 있는 튜플은 (데이터, 데이터, 데이터,...) 형태로 생성합니다. 한 개의 값을 가질 때는 마지막에 ", (쉼표)"를 써줘야 합니다. 또한 튜플은 괄호를 생략해도 튜플로 인식할 수 있습니다.
- 튜플의 인덱싱과 슬라이싱 그리고 연산자는 리스트에서 했던 것과 동일합니다. 다만 다시 한번 말하지만 튜플은 변경과 삭제가 불가능합니다.
- 비순서 자료형 : 딕셔너리(dictionary), 집합(set), 부울(bool)
- 딕셔너리(dictionary) : 순서를 가지지 않는 객체의 쌍으로서 딕셔너리 뜻 그대로 사전을 의미하며 key와 value를 한 쌍으로 갖는 자료형입니다. 리스트가 '인덱스(index)' 기반으로 값을 저장하는 것이라면, 딕셔너리는 '키(key)' 기반으로 값을 저장하는 것이라고 할 수 있습니다.
- 딕셔너리 선언 : 괄호 있는 튜플로서 딕셔너리는 중괄호 { }로 선언하며, '키 : 값' 형태를 쉼표(,)로 연결하려 생성합니다. 키는 문자열, 숫자, 부울 등으로 선언이 가능하고 일반적으로 키는 문자열을 사용합니다. 형태는 이런 식으로 { key1 : value1, key2 : value2,... key_n : value_n } 선언이 가능합니다. 딕셔너리 요소에 접근하려면 대괄호[] 내부에 키를 입력하면 됩니다.
- 딕셔너리의 변경과 삭제 : 딕셔너리는 값을 변경하거나 삭제할 수 있는데 값을 추가하는 것과 수정하는 것은 같은 방식으로 가능하며 삭제할 때는 원하는 키값을 선택하고 del을 사용하여 삭제할 수 있습니다.
- 딕셔너리 관련 함수
# '+ ' : 덧셈
# keys() : key 리스트 만들기
# values() : value 리스트 만들기
# items() : key, value 쌍 얻기
# get() : key로 value 얻기
# in() : 해당 key가 딕셔너리 안에 있는지 조사
# clear() : key:value 쌍 모두 지우기
- 집합(set) : 중복이 없고 순서를 가지지 않는 객체의 집합 (집합 관련 데이터 처리)입니다.
set 키워드를 통해 생성(set 괄호 안에 리스트 입력, set 괄호 안에 문자열 입력)
- 집합에서 사용되는 교집합, 합집합, 차집합
# 합집합 : |
# 교집합 : &
# 차집합 : -
- 집합 관련 함수
# add() : 한 개의 값 추가
# update() : 여러 개의 값 추가
# remove() : 특정 값 제거
- 부울(bool) : 참과 거짓을 나타내는 자료형으로 주로 조건문의 반환 값으로 사용
- 변하지 않는 참과 거짓
문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있다면 False(거짓)
문자열, 리스트, 튜플, 딕셔너리 등의 값이 비어 있지 않다면 True(참)
if문(조건문)으로 참, 거짓 판
입력과 출력
- 입력 : 보통 사용자로부터 입력을 받을 때 input() 함수를 사용합니다. input() 함수 괄호 안에 입력한 내용을 '프롬프트 문자열'이라고 부르고 사용자로부터 입력을 요구하는 내용 적는 것으로 사용됩니다.
- 입력 시 변수 대입 : input() 함수의 결과 값을 변수에 대입하며 사용할 수 있는데 input() 함수는 사용자가 무엇을 입력해도 결과는 무조건 문자열 자료형으로 나옵니다.
- 이런 문자열 자료형으로 출력되는 input() 함수는 숫자로 변환해야만 숫자 연사에 사용이 가능합니다. 여기서 int() 함수를 이용하여 숫자(정수)로 변환하여 사용할 수 있고 float() 함수를 이용하여 숫자(실수)로 변환하여 사용이 가능합니다. 그렇다면 다시 문자열 자료형으로 변경하는 함수도 있는데 str() 함수가 있습니다.
- 출력 : 출력은 지금까지 사용했던 print() 함수를 말할 수 있습니다. 보통 문자열을 출력할 때 사용하는 큰 따옴표 따옴표(")로 둘러싸인 문자열은 더하기(+) 연산과 동일하다는 특징을 가지고 있습니다. 또한 콤마를 이용해서 문자열 띄어쓰기를 할 수 있습니다.
- 파일 입출력
파일을 열 때는 open() 함수 사용
파일 객체 = open(파일 경로, 파일 열기 모드)
open() 함수의 첫 번째 매개변수에는 파일 경로(path)를 입력
open() 함수의 두 번째 매개변수에는 파일 열기 모드(mode)를 지정
- 파일 열기 모드(mode) 종류
w : write 모드(쓰기 모드, 파일에 내용을 쓸 때 사용)
a : append 모드(추가 모드, 파일의 마지막에 새로운 내용을 추가할 때 사용)
r : read 모드(읽기 모드, 파일을 읽기만 할 때 사용)
- 파일 쓰기
파일을 쓸 때는 write() 함수 사용(파일객체. write(“문자열"))
write() 함수 안에 작성하고 싶은 문자열 입력
- 파일 닫기
파일을 닫을 때는 close() 함수 사용
- 파일 읽기
파일을 읽기 모드(r)로 열기
readline() : 텍스트 한 줄씩 읽어서 반환
한 줄씩 읽어 출력할 때 줄 끝에 \n 문자가 있다면 빈 줄도 같이 출력됨
readlines() : 파일의 모든 줄을 읽어서 각각의 줄을 리스트로 반환
strip() : 줄 바꿈(\n) 문자 제거
조건문
- if 조건문
조건이 참일 경우 실행
조건이 거짓일 경우 패스
if 조건문 :
조건이 참일 때 수행할 문장 1
들여 쓰기 : if 문에 속한 모든 문장은 들여 쓰기 필수
if 조건문 :
조건이 참일 때 수행할 문장 1
조건이 참일 때 수행할 문장 2
조건이 참일 때 수행할 문장 3
콜론 (:) : if 조건문 뒤에는 반드시 콜론(:)을 삽입(파이썬 문법 구조)
- else 문
else 문은 if 문 뒤에 사용하며, if문 조건이 거짓일 때 실행되는 부분
if 조건문 :
조건이 참일 때 수행할 문장 1
else :
조건이 거짓일 때 수행할 문장 2
- elif 문
elif 문은 세 개 이상의 조건을 연결할 때 사용
if 조건문A :
조건문A가 참일 때 수행할 문장 1
elif 조건문B :
조건문B가 참일 때 수행할 문장 2
elif 조건문C :
조건문C가 참일 때 수행할 문장 3
else :
모든 조건이 거짓일 때 수행할 문장 4
- in / not in 연산자
데이터 안에 찾고자 하는 것이 있는지 없는지 확인하는 연산자
# in / not in 연산자 예시
if '찾는것' not in '데이터':
print(True)
else:
print(False)
- pass 키워드
조건은 만족하지만 아무 일도 수행하고 싶지 않을 때 사용
프로그래밍의 전체 골격을 잡아놓고, 내부에 처리할 내용은 추후에 만들고자 할 때 사용
# pass 키워드 예시
list = [데이터1, 데이터2]
if 데이터3 not in basket:
>>> pass
- 관계 연산자
두 개의 값을 비교하여 그 값을 참 또는 거짓으로 판별하는 연산자 (==,!=, <, >, <=, >=)
- 논리 연산자 : 논리 값을 판단해 주는 연산자
not(논리 부정)
: 한 개의 값이 False면 결과 값으로 True 반환, True이면 결과 값으로 False 반환
and(논리 곱)
: 두 개의 값이 모두 True인 경우에만 결과 값으로 True 반환, 나머지는 모두 False 반환
or(논리 합)
: 두 개의 값이 모두 False인 경우에만 결과 값으로 False 반환, 나머지는 모두 True 반환
반복문
- for 반복문 : 기본적으로는 특정 코드로 반복 작업을 하고 싶을 때 사용됩니다.
for 변수 in 리스트( 또는 튜플, 문자열) :
반복적으로 수행할 문장1
for 반복자 in 반복할 수 있는 것 :
반복적으로 수행할 문장1
- 문자열 반복
문자열은 문자의 나열이며, 큰따옴표 혹은 작은따옴표로 입력
문자열을 이용한 for문은 문자 하나하나가 변수에 들어가며, 차례차례 반복
# 문자열 반복 예시
List = 'data'
for a in List:
print(a)
>>>
d
a
t
a
- 리스트 반복
리스트는 여러 가지 자료를 저장할 수 있는 자료형
요소(element)는 리스트 안에 있는 각각의 내용을 의미
인덱스(index)는 리스트 안에 있는 값의 위치를 의미
리스트를 이용한 for문은 요소 하나하나가 변수에 들어가며, 차례차례 반복
# 리스트 반복 예시
List = [데이터1,데이터2,데이터3]
for a in List:
print(a)
>>>
데이터1
데이터2
데이터3
- 딕셔너리 반복
딕셔너리는 키를 기반으로 여러 자료를 저장하는 자료형
키(key)는 딕셔너리 안에서 값을 접근할 때 사용하는 것
값(value)은 딕셔너리 안에서 각각의 내용을 의미
딕셔너리를 이용한 for문은 딕셔너리 안에 있는 키(key)가 변수에 들어감
for 키 변수 in 딕셔너리 :
반복을 수행할 문장1
- 범위 반복
- range( ) 함수 : 함수로 바로 출력하면 range(0, 5)로 출력됨
range(A) : 매개변수로 숫자 한 개 입력 (0부터 A-1까지의 정수로 범위 생성)
range(A, B) : 매개변수로 숫자 두 개 입력 (A부터 B-1까지의 정수로 범위 생성)
range(A, B, C) : 매개변수로 숫자 세 개 입력( A부터 B-1까지의 정수로 범위 생성하는데 앞 뒤 숫자가 C만큼의 차이를 가짐)
- list( ) 함수
범위를 리스트로 변경하면 범위 안에 어떤 값이 있는지 확인 가능
- while 반복문 : 기본적으로는 조건을 만족하는 한, 반복적으로 문장을 실행합니다. (부울(bool) 표현식이 참인 동안 문장을 계속 반복되며 부울 표현식이 거짓이 되면 반복문 종료됩니다.) 무한 반복이 되지 않도록 주의해야 합니다.
while 조건 :
반복을 수행할 문장1
반복을 수행할 문장2
반복을 수행할 문장3
...
- break 키워드 : 반복문을 벗어날 때 사용하는 키워드로서 일반적으로 무한 반복문을 만들고, 내부의 반복을 벗어날 때 사용됩니다.
- continue 키워드 : 반복문의 현재 반복을 생략할 때 사용하는 키워드로서 현재 반복을 생략하고, 다음 반복으로 넘어갈 때 사용됩니다.
함수
- 기본구조 : [입력 >> 함수 >> 출력 ] 구조로서 반복적으로 사용되는 기능을 함수로 사용됩니다. 또 입력(들어가는 값)만 바뀌고 같은 코드가 반복되는 경우 특정 코드들을 모아두는 용도로 사용됩니다. 함수는 def 키워드 사용하여 생성합니다.
# 기본 함수 구조
def 함수이름(매개변수) :
수행할 문장1
수행할 문장2
...
return 결과
# 함수 호출
함수이름(인수1, 인수2)
- 매개변수(parameter) : 함수에 입력으로 전달된 값을 받는 변수
# 매개변수 위치
def 함수이름(매개변수1, 매개변수2) :
수행할 문장1
...
return 결과
- 디폴트 매개변수 : 매개변수의 값이 입력되지 않으면 디폴트 값으로 자동 입력(매개변수가 여러 개인 경우 뒤의 매개변수부터 디폴트 값을 가질 수 있음)
# 디폴트 매개변수
def 함수이름(매개변수 = 디폴트 값) :
수행할 문장1
return 결과
- 가변 매개변수 : 원하는 만큼의 인자를 받을 수 있는 함수를 가변 매개변수를 사용한다고 표현하고 가변 매개변수는 매개변수 앞에 *를 붙인다. (생성된 가변 매개변수는 리스트처럼 사용) , 가변 매개변수의 제약이 있다.(가변 매개변수 뒤에는 일반 매개변수가 올 수 없음, 가변 매개변수는 하나만 사용할 수 있음)
def 질문(*values):
print(대답을 유도할 수 있는 질문)
for value in values:
print(value)
>>> 실행
대답을 유도할 수 있는 질문
>>>내 대답 : 질문(데이터1,데이터2,데이터3,데이터4)
>>> 결과
대답을 유도할 수 있는 질문
데이터1
데이터2
데이터3
데이터4
- 키워드 매개변수 : 매개변수의 이름을 지정해서 입력하여 함수 호출(키워드 매개변수를 넘겨줄 때 매개변수의 순서와 상관없이 나열 가능)
def 함수(매개변수A, 매개변수B, 매개변수C):
수행할 문장1
return 결과
>>> 입력시 다음과 같이 순서와 상관없이 나열 가능
함수(매개변수B = 2, 매개변수C = 1, 매개변수A = 3)
- 인수(arguments) : 함수를 호출할 때 전달하는 입력 값
함수(인수1, 인수2)
- 리턴(return) : 함수를 호출한 곳으로 결과 값 반환
# 한개의 리턴 값
def returnval() :
return "되돌려 주는 결과 값"
value = returnval()
print(value)
되돌려 주는 결과 값
# 두 개의 리턴 값
def returnval() :
a = 숫자1
b = 숫자2
return a, b
value1, value2 = returnval()
print(value1)
print(value2)
>>>
숫자1
숫자2
[마무리]
오늘부터 파이썬을 다루는 강의가 시작되었습니다. 파이썬의 기본이라고 할 수 있는 부분들이 많이 나왔는데 파이썬 초심자로서 많은 양이지만 익숙해지기 위해 예시를 많이 복습하는 과정을 반복해야 될 거 같습니다. 새로운 무언가를 공부할 때는 반복 학습만큼 좋은 게 없기 때문에 노력해야겠습니다.
'프로그래밍 > Python' 카테고리의 다른 글
[AI 부트캠프] DAY 11 - 파이썬 5 (0) | 2023.08.01 |
---|---|
[정보] 파이썬 코딩 연습하기 좋은 사이트 5가지 추천 (0) | 2023.07.30 |
[AI 부트캠프] DAY 10 - 파이썬 4 (0) | 2023.07.29 |
[AI 부트캠프] DAY 9 - 파이썬 3 (0) | 2023.07.28 |
[AI 부트캠프] DAY 8 - 파이썬 2 (0) | 2023.07.27 |
댓글