본문 바로가기
프로그래밍/Python

[AI 부트캠프] DAY 7 - 파이썬 1

by HOHHOH 2023. 7. 26.

[오늘의 일지]

파이썬의 배경지식 

파이썬 익숙해지기 - 변수와 자료형, 입력과 출력, 조건문, 반복문, 함수

[상세 내용]

파이썬의 배경지식 

파이썬의 역사

- Programming : 보통 컴퓨터 시스템을 구통시킬 때 인간이 컴퓨터에 명령을 내리는 것을 말하며 프로그램을 만드는 모든 작업을 개발이라고 칭하기도 합니다.

- Python : 컴퓨터 시스템을 구동시키기 위한 프로그래밍 언어 중 하나이며 가장 활용도가 높고 쉬운 언어로 알려져 있습니다. 또 MATLAB, R과 같은 도메인 특화 언어와 Java, C 같은 범용 언어의 장점을 고루 갖추고 있기에 높은 확장성과 다른 언어나 라이브러리에 쉽게 연동이 가능하다는 장점을 가지고 있습니다. 연동 가능한 라이브러리에는 통계, 머신러닝, 자연어, 이미지, 시작화 등을 포함하고 있습니다.

- Python 활용 분야 : 웹 제작, 애플리케이션 제작, 게임 제작, 인공지능 제작 등 많은 활용 분야가 있습니다.

- Python Editor : 여기서 에디터란 소스 코드가 들어 있는 파일을 편집할 수 있는 프로그래밍 툴을 의미합니다.

에디터의 종류 : Pycharm, Jupyter notebook, Visual Studion Code, IDLE, Google Colaboratory(Colab) 등이 있는데 수업에서는 주로 Colab을 통해 실습을 한다고 하셨습니다. 아래 에디터 홈페이지를 남겨둘 테니 각각의 장점들을 확인해 보면 좋을 거 같습니다.

 

 

 

PyCharm: JetBrains가 만든 전문 개발자용 Python IDE

 

www.jetbrains.com

 

 

Project Jupyter

The Jupyter Notebook is a web-based interactive computing platform. The notebook combines live code, equations, narrative text, visualizations, interactive dashboards and other media.

jupyter.org

 

 

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

 

 

IDLE

Source code: Lib/idlelib/ IDLE is Python’s Integrated Development and Learning Environment. IDLE has the following features: coded in 100% pure Python, using the tkinter GUI toolkit, cross-platform...

docs.python.org

 

 

 

colab.google

Colab is a hosted Jupyter Notebook service that requires no setup to use and provides free access to computing resources, including GPUs and TPUs. Colab is especially well suited to machine learning, data science, and education.

colab.google

 

파이썬 익숙해지기

변수와 자료형

- 변수(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

 

[마무리]

 오늘부터 파이썬을 다루는 강의가 시작되었습니다. 파이썬의 기본이라고 할 수 있는 부분들이 많이 나왔는데 파이썬 초심자로서 많은 양이지만 익숙해지기 위해 예시를 많이 복습하는 과정을 반복해야 될 거 같습니다. 새로운 무언가를 공부할 때는 반복 학습만큼 좋은 게 없기 때문에 노력해야겠습니다.

 

 

 

반응형

댓글