Python/Fundamentals

python intro. (01)

metamong 2022. 3. 18.

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

댓글