1. python 활용을 위한 기초적인 재료
[1] print()
- ,(콤마)를 이용해서 여러 자료를 출력할 수 있다. (, 사이 띄어쓰기)
- print() 여러 번 사용: print() 사이 enter키의 사용으로 여러 줄에 걸쳐 출력이 일어난다
print("hello!")
print(3, "hello!")
+ sep
- print문 사이 출력할 여러 형태들을 (,로 구분) 그 사이사이 sep 구분자를 집어넣어 출력한다는 뜻
- 단, sep = \n일 경우 한 줄 띄워서 출력된다 (\t는 탭 기준 띄어서 출력)
print(1,2,3, sep=',')
#1,2,3
print(1920,1080, sep='X')
#1920X1080
print(26, 35, 55, sep='\n')
#26
#35
#55
+ end
- print의 결과를 한 줄로 연결하고 각 print가 끝난 뒤 끝 부분 문자를 정해준다
print("2022", end = '-')
print("01", end = '-')
print("08")
#2022-01-08
[2] 산술 연산자
* 몫은 //
* 나머지는 %
* 소수그대로 나누는 나눗셈 연산자는 /
5/2 #2.5
5//2 #2
5%2 #1
* 지수승은 **
2**2 #4
[2] 기본 자료형
{1} 숫자형 (number)
* 숫자로 이루어진 자료형 정수 & 실수 등을 다룰 수 있다. 숫자끼리의 연산이 가능
{2} 문자열 (string)
* 문자나 문자들을 늘어놓은 것
- 큰 따옴표("")와 작은 따옴표('')로 구분
- 즉, 숫자에 따옴표를 붙이면 문자열로 변환
{3} 리스트(list)
* 여러 자료를 보관하는 자료형
- 다른 종류의 자료를 함께 담을 수 있다.
- 자료 안에 순서가 존재한다.
[] #empty list
['a', 'b']
['a', 2]
+ 주석 (comment)
* 주석은 컴퓨터가 무시한다.
- 한 줄 주석은 #, 여러 줄 주석은 """ """, ''' ''' 로 한다. (따옴표 세 개)
{4} 자료형끼리의 간단한 형변환
* type() 연산자를 활용하여 해당 자료의 type을 알 수 있다. 또한 아래의 함수를 활용하여 원하는 자료형으로 변환을 할 수 있다.
int() #정수형으로 변환
float() #실수형으로 변환
str() #문자형으로 변환
list() # 리스트로 변환
tuple() # 튜플로 변환
[3] 변수
* 자료를 그릇에 담아서 보관, 사용하면 편리하다 - 이를 변수(variable)라 부름
* 변수 사용 방법
- 변수이름 = 자료 (등호 기호는 '같다'가 아니라 오른쪽 자료를 왼쪽 자료에 넣어주는 대입의 의미를 뜻한다)
num = 10 # number
name = 'Michael # string
grade = ['A', 'B', 'C'] # list
* 변수 이름은 숫자, 알파벳, 한글, 언더바(_) 사용 가능
→ 그릇의 내용물을 잘 표현하는 이름으로 변수명을 만든다
- 변수 이름이 숫자로 시작해서는 안된다
- 숫자로만 구성된 변수 이름 금지
- python 문법에서 사용되는 예약어는 사용 금지 (for, while 등등)
- 공백 문자 & 연산자 사용 금지
- 대소문자 다르게 사용하면 다른 변수로 인식
- 특수문자는 언더바 제외 사용 불가능
2. 특정 조건에 따라 작업을 수행하는 조건문
[1] 논리 자료형 & 비교 연산
* 논리 자료형 = 참(T) 또는 거짓(F)을 나타내는 자료형
* 비교 연산자 = 숫자나 문자의 값을 비교하는 연산자
- 주어진 진술이 참이면 True, 거짓이면 False
- == (같다) !=(다르다) >, <, >=, <= (부등호 본래 의미와 동일)
- 문자열에서 대소문자 구분 (대소문자 다르면 == 결과 - False)
- 숫자에서 소수점 있고 없고는 구분하지 않음 → 모두 True 결과 출력
print(3<5) # True
print(7==5) # False
* is 연산자
- 존재를 따짐
(==연산자는 값 자체만을 비교)
* id 연산자 - 해당 메모리의 주소 반환
[2] 논리 연산
* AND - 각 논리가 모두 True여야 True
print( 3==3 and 4<=5 and 6>2)
# true
* OR - 논리들 중 True가 존재하면 True
print(3==4 or 4<=5 or 6<2)
# true
* NOT - 기존의 논리와 반대로! 논리값을 뒤집는다
print(not 3==4)
# true
[3] 조건문
* 우리 삶에는 조건에 따라서 다르게 행동해야 할 상황이 많이 발생하기 때문! 조건문 필요
- 어떠한 특정 조건에 따라서 실행 결과가 달라지는 구문
{1} if문
* if문: 조건이 True일 때 명령 실행 (조건 뒤 : (콜론)연산자 꼭 붙이기!)
- if문에 들어갈 명령들은 같은 들여쓰기로 구분한다
- if문이 끝났으면 들여쓰기를 해제하고 다른 명령어를 쓰면 됨
if string[0] == "a":
count = count+1
print(string)
- if문에서 조건을 만족하지 못하면 else문으로 go
- 조건이 True면 if문 실행 & False면 else문 실행
x = input()
if x in ['a', 'e', 'i', 'o', 'u']:
print("모음입니다.")
else:
print("자음입니다.")
{2} if-elif-else문
* else if → elif
(예시)
x = input()
if x%2 == 0:
print("2의 배수입니다.")
elif x%3 == 0: #2의 배수가 아닌 것들 중에서 해당 조건을 만족하는 경우
print("3의 배수입니다.")
if condition 1:
do A
elif condition 2:
do B
elif condition 3:
do C
~
else:
do X
3. 반복되는 명령을 줄여주는 반복문
* 반복문의 필요성 - 같은 명령을 반복하는 코드를 묶어서 표현하기
- 반복문 = 어떠한 조건이나, 범위 내에서 어떠한 명령을 반복적으로 수행하는 것
[1] for문
* for문의 범위(sequence)에서 원소를 하나씩 가져와서(for) 출력(명령)
* 원소로 반복하는 방법 - sequence의 원소를 하나씩 변수에 넣어가면서 명령 실행
for variable in sequence:
<statements>
(예시) - 총 3번의 실행 - 해당 list의 원소 개수만큼 실행됨
sum = 0
for i in[1,2,3]:
sum = sum + i
* 명령이 len(sequence)번 만큼 실행
(예시) - 총 7번의 실행 - 해당 sequence의 길이만큼 실행됨
length = 0
for x in 'abcdefg':
length = length + 1
[2] for - range 문
* range = 연속되는 숫자를 만들어 주는 sequence 자료형
- range(a): 'a번 반복한다'는 의미로도 해석 가능함
range(a,b) #a, a+1, a+2, .... , b-1
range(0,9) #0, 1, ... 7, 8
range(5) #range(0,5) - 0, 1, 2, 3, 4
{1} 구간으로 반복
- a 이상 b 미만의 수를 변수에 넣어가면서 명령 수행
a = [1]
for i in range(2,4):
a.append(i)
print(a) # [1,2,3]
- range()의 세 번째 인수는 간격으로 음수, 양수 모두 가능하다
for i in range(5,10,2):
print('hello world' + str(i))
# hello world 5
# hello world 7
# hello world 9
for i in range(10,5,-2):
print('hello world' + str(i))
# hello world 10
# hello world 8
# hello world 6
+) 응용 - factorial 출력해보기 (range의 세 번째 인수 음수 사용!)
- 5! 출력
n = 5
factorial = 1
for i in range(5,0,-1):
factorial = factorial * i
#120
- 거꾸로 출력하고 싶으면 reversed() 사용
for i in reversed(range(10)):
print('hello world', i)
#hello world 9
#hello world 8
#hello world 7
#hello world 6
#hello world 5
#hello world 4
#hello world 3
#hello world 2
#hello world 1
#hello world 0
{2} 횟수로 반복
- a번만큼 명령을 수행
count = 0
for i in range(10): #execute 'for' 10 times
count = count+1
print(count) # 10
4. python에서 자료를 담는 여러가지 방식
[2] sequence 자료형 (+tuple)
{1} tuple
→ list와 매우 유사하다
→ 단, 대괄호가 아닌 괄호()를 사용한다
→ 괄호 없이 나열해도 tuple로 인식한다
→ list는 내부 항목을 삭제, 추가하거나 변경이 가능하지만, tuple은 한 번 생성하면 그 내용을 일부 삭제, 추가, 변경이 어렵다
→ 변수 한 개를 tuple로 변경하고 싶으면 해당 수 다음에 쉼표(,)를 추가한다
→ index, count method와 같은 값의 정보를 구하는 method 사용 가능
* sequence의 특징
* 문자열과 list, tuple을 묶어서 sequence 자료형이라 함
- 순서가 있는 자료형: index 가능
a = "Once"
b = ['T', 'W', 'I', 'C', 'E']
c = (1,2,3,4,5)
* 원소간의 순서가 존재 - indexing & slicing이 가능하다
a = "once"
b = ['t', 'w', 'i', 'c', 'e']
print(a[1]) #n
print(b[2:4]) #['i','c']
* indexing/slicing 할 때 음수를 넣거나, 자리를 비우는 것도 가능하다
a = "once"
b = ['t','w','i','c','e']
print(a[-1]) #e: 뒤에서 1번째 원소
print(b[:3]) #['t','w','i']: 처음 ~ 3번째 slicing
print(b[2:]) #['i','c','e']: 2번째 이상의 모든 원소 가능
print(b[2:len(b)]) #3번째 원소의 i부터 끝까지 출력한다는 뜻 - len() 함수 활용 가능하다
* 멤버 조회 - in 연산자로 sequence안에 찾고자 하는 원소가 있는 지 확인이 가능하다
- 그 반대로 not in 연산자 사용 가능 (in 연산자 결과와 반대)
a = #same above
b = #same above
print('o' in a) # True
print('b' in b) # False
* 길이 확인 - len 연산자로 sequence 안에 원소가 몇 개인지 확인 가능
a = #same above
b = #same above
print(len(a)) # 4
print(len(b)) # 5
* 연결 연산) + 연산자로 같은 sequence 두 개를 이어 붙일 수 있다
- extend method와 동일 개념
c = ['t','w','i'] + ['c','e']
print(c) # ['t','w','i','c','e']
* 반복 연산) * 연산자로 sequence를 반복할 수 있다
d = "shy"*3
print(d) #shyshyshy
[3] Dictionary(딕셔너리)
* 사전 → 짝꿍이 있는 자료형!
* {} - 중괄호로 묶어서 표현
* {key:value}의 형식: key를 알면 value를 알 수 있음
- key: 열쇠처럼 자료를 꺼낼 수 있는 도구
- value: dictionary에서 key로 꺼낸 자료
- Dictionary[key]: dictionary에서 자료를 꺼내기 (indexing으로 key를 이용해 자료를 꺼내 올 수 있다)
dict_zero = {}
person = {'name': 'Michael', 'age': 10}
print(person['name']) #Michael
print(person['age']) #10
* Dictionary에서 자료를 추가하기
(예시) 'hometown'이라는 key에서 'Seoul'이라는 value를 추가한다 (한 쌍 추가)
person = {'name':'Michael', 'age':10}
person['hometown'] = Seoul
* if문을 통해 dictionary key에 접근 가능
if "job" in dic:
print(dic["name"])
else:
print("존재하지 않는 key에 접근")
* for문을 통해서도 접근 가능
- dictionary) for문
for key in dic:
print(key, ":", dic[key])
#key:value pairs
- dictionary의 key) for문
(만약 key의 value값이 list 형태라면)
for i in dic['key']:
print(i)
#key에 해당하는 list 원소 출력
* del - dictionary의 원소 삭제
(예시) 'age'라는 key에 해당되는 dictionary의 한 쌍을 삭제한다
person = {'name':'Michael', 'age':10}
del person['age']
print(person) # {'name':'Michael'}
* key는 변할 수 없는 자료형
- list는 안되고 tuple은 가능
- list는 변할 수 있다. 원하는 원소를 뺴고 삽입할 수 있기에 list는 변하면 안되는 dictionary의 key로 불가능하다.
- 하지만, tuple 자체는 변할 수 없기에 고정된 dictionary의 key로 가능하다
- 즉, 문자열 & 숫자 & tuple은 딕셔너리의 key로 가능
- 변경 가능한 자료인 리스트, 사전은 key로 불가능
- 함수 이름은 딕셔너리의 key & 값으로 사용 가능
datas = {[1,2,3]:'Alphabet'} #Error
datas = {(1,2,3):'Number'} #Ok
* key는 2개 이상의 동일한 key가 있어서는 안된다
* get() - key를 인자로 집어넣어 해당 value 출력 가능
- 존재하지 않는 key이면 None 출력
value = dic.get("Name")
print("값: ",value)
#값: 이름
#(if key doesn't exist) 값: None
[4] Set
→ 중괄호{}로 요소들을 둘러싼 형식
→ 각 요소는 컴마(,)로 분리
→ list, tuple과는 차이가 존재: 순서 개념이 없다 & 내부 요소는 중복이 없는 값으로 구성된다
→ 즉, indexing 불가능
5. 함수 & 메서드
[1] 함수
* 프로그래밍의 기본 틀) 컴퓨터에게 정보를 입력하고, 컴퓨터가 작업을 하고 컴퓨터가 작업 결과를 출력
- 입구 → 작용(기능) → 출구
- '작용'에 해당하는 함수 기능
* 함수 = 특정 기능을 수행하는 코드(들의 모임)
- 앞서 언급된 len(), int(), str() 모두 함수 (자료를 넣으면 무언가를 알려주는 기능이 곧 함수!)
{1} 함수의 종류
* 내장함수 = python 개발자들이 이미 만들어 둔 함수들 (편리하게 가져다 쓰면 됨)
- input(): 자료 입력하는 함수
- print(): 자료 출력하는 함수
- max(): sequence 자료의 최댓값을 구하는 함수 (min()은 최솟값)
print(max(1,2,3,4,5)) #5
print(min([1,2,3,4,5])) #1
- sum(): 숫자 원소로 이루어진 sequence 자료의 합
- len(): sequence 자료의 길이를 구하는 함수
print(sum((1,2,3,4,5)) #15
print(len("Triangle")) #8
* 사용자 지정 함수
= 사용자가 여러 코드를 묶어서 새로 만든 함수
def plusDouble(a,b):
c = a+b
return 2*c
print(plusDouble(3,4)) #14
{2} 함수 만들기
* def keyword를 이용해서 함수 정의
* 인자를 이용해서 함수 내부로 값을 전달 (함수 만들 때는 매개변수라 부름)
* 같은 들여쓰기를 통해 명령 작성
* return을 이용해서 함수 외부로 값을 전달
- 함수 내부에서 일어난 일은 함수 외부에서 알 수 없기에 반환을 통해 외부로 전달한다
* 빈 함수 선언 시 함수 내부에 pass 선언
def function_name(parameter):
<function_code>
...
...
return return_value
* 매개변수 & 인자
- 매개변수(parameter): 함수를 정의할 때 (만들 때) 넘겨받은 값을 관리하는 변수
- 인자(argument): 함수를 호출할 때 (사용할 때) 함수로 넘겨주는 자료
def plusDouble(a, b): #이때 a, b는 매개변수!
return 2*(a+b)
print(plusDouble(3, 4)) #이때 3, 4는 인자!
# 함수 호출시
# a = 3
# b = 4로 간주
[2] method(메서드)
= 특정 자료에 대해 특정 기능을 하는 code
my_list = [1,2,3]
my_list.append(4)
my_list.count(2)
my_list.pop()
* 함수는 특정 기능을 수행한다 (즉, 매개변수를 이용해 자료를 전달해 준다)
* 메서드는 특정 자료와 연관 지어 기능을 한다 (자료 뒤에 .을 찍어 사용한다)
* 출처1) 2021 NIPA/AI 기본/응용 교육과정
* 출처2) 2021 공공데이터 청년인턴(일경험수련생) 상시교육
'Python > Fundamentals' 카테고리의 다른 글
시계열 데이터 - datetime (0) | 2022.03.24 |
---|---|
list comprehension (0) | 2022.03.20 |
Module & Package (0) | 2022.03.19 |
python intro. (03) (0) | 2022.03.19 |
python intro. (02) (0) | 2022.03.18 |
댓글