파이썬 자료형 (Data Type)
파이썬을 공부할 때는 자료형을 아는 것이 중요하다.
파이썬에는 숫자형(Number), 문자형(Str), 리스트형(List), 튜플형(Tuple), 딕션너리형(Dict), 집합형(Set), 불형(Boolean)이 있다.
숫자형(Number)
a = 1
b = 3
type(a)
int
실수형(float)
a= 2.0
b= 3.5
연산
a + b #더하기
a - b #빼기
a * b #곱하기
a / b #몫
a //b #몫(정수)
a %b #나눗셈
a**b #제곱
a^b
a = (정수 or 실수) * 10 ^3 #10의 3승 제곱
* 10 ^ -3 #10의 -3승 제곱
문자형(String)
'작은 따옴표 혹은 ""큰따옴표로 감싸져 있는 형태 (python coding convention)이고 인덱싱(Indexing) 혹은 슬라이싱(Slicing)으로 표현할 수 있다.
인데싱은 원하는 값을 가리킨다는 뜻으로 연속적인 객체(리스트, 튜플, 문자열)에 부여된 번호를 의미하며, 슬라이싱은
무언가를 잘라낸다는 의미로 연속적인 객체(리스트, 튜플, 문자열)에 부여된 번호를 이용하여 연속된 객체에 일부를 추출하는 작업
a = "Hello python!"
a[4] #0 0부터 시작하므로 5번째가 출력된다.
#hello를 출력하고 싶은 경우 슬라이싱 슬라이싱의 경우 뒤에 번호를 포함하지 않으므로
#5를 포함해주어야 hello로 출력된다.
a[0:4] # 0<= a < 4
a[0:5]
문자열 포매팅(formatting)
파이썬에서는 문자를 다양한 방법으로 출력할 수 있다.
name = 'woong'
age = 20
print("Name : " + name +", Age: " + str(age)) #복잡함
print("Name : {}, Age: {}".format(name, age)) # 개수가 많아질 경우 복잡함
print(f"Name : {name}, Age: {age}") #f형태를 가장 많이 씀 가로 안에 변수를 넣으면 그대로 출력됨
Name : woong, Age: 20
문자열 함수 3가지 : strip(), join(), split()
strip()
a = " 공백을 제거하고 싶다. "
type(a)
text = a.strip()
text
공백을 제거하고 싶다. 공백을 제거할 수 있음
join()
words = ['이어','주고','싶어']
type(words)
sentence = "-".join(words)
sentence
이어-주고-싶어
-를 붙여서 출력해줄 수 있음
split()
sentence.split('-')
['이어', '주고', '싶어']
-를 기준으로 다시 분리할 수 있음
리스트형(List)
개발자들이 변수를 한곳에서 관리하고 싶어서 만든 개념 append를 통해 추가해 줄 수 있고, pop을 통해 뺄 수 있다.
programming = ['자바', '파이썬', 'c언어']
programming.append('자바스크립트')
['자바', '파이썬', 'c언어', '자바스크립트']
programming.pop()
자바스크립트
튜플(tuple)
요소를 더하거나 제거하거나 수정할 수 없는 개념으로 한번 생성되면 값이 변경이 불가
programming = ('자바', '파이썬', 'c언어')
programming.append('자바스크립트')
programming
AttributeError: 'tuple' object has no attribute 'append'
()로 표현하고 추가가 안 됨을 알 수 있다.
programming = programming + ('자바스크립트',)
새로운 튜플을 만들어서 추가하는 것은 가능하다.
딕셔너리(Dict)
key, value형태로 표현하고, json형식, API라고 불리는 형태와 동일하다.
x = {"name":"woong", "age":[20, 22], "city":"seoul"} #딕셔너리 형식
type(x)
x['city'] #도시 출력
x.get('ages', 0) #나이를 출력 없으면 ,를 통해서 표현해줄 수 있다. try except문으로도 가능하다
for key, value in x.items():
print(key, value)
#key와 value 모두 출력가능하다
new_name = {'name': 'woongs'}
x.update(new_name)
#update를 통해 새로운 이름 업데이트도 가능하다.
집합형(set)
순서가 없고, 중복을 허용하지 않는다.
x = set([1,2,3,5,7,5,3,1,3,4,6,3])
{1, 2, 3, 4, 5, 6, 7}
불형(Boolean)
x = True
type(x)
True, False로 표현한다.
제어문&반복문
num = 15
if num < 5:
print("숫자가 5보다 작습니다.")
elif num < 10:
print("숫자가 10보다 작습니다.")
else:
print("숫자가 10보다 큽니다.")
첫번째 조건은 if로 그다음에는 elif로 나머지는 else로 표현한다.
sum = 0
i = 0
while i < 10:
i = i + 1
sum = sum + i
print(sum)
1부터 10까지 반복문을 통해서 합할 수 있다.
for i in range(10):
if 3<= i <= 5:
print("조건문 i : ", i)
# break # 반복문 종료
continue #반복문 계속 실행
print(i)
0
1
2
조건문 i : 3
조건문 i : 4
조건문 i : 5
6
7
8
9
continue를 사용하면 if절이 계속 돌기 때문에 조건문이 연속적으로 나온다.
for i in range(10):
if 3<= i <= 5:
print("조건문 i : ", i)
break # 반복문 종료
#continue #반복문 계속 실행
print(i)
break를 쓰면 3일때 나가짐으로 다음과 같이 출력된다.
0
1
2
조건문 i : 3
함수 & 클래스
def my_name(name, age): # input
print(f"제 이름은 {name}, 나이는 {age} 입니다.") # output: X
return name, age
output = my_name('woong', 20)
print(output) # None -> woong
함수는 위와 같이 정의할 수 있는데 print를 쓸 경우 출력은 되지만, 반환되지 않아서 None타입으로 출력된다.
내장함수(Built-in functions)
a = 'woong'
b = a.upper() # 대문자
b.lower() # 소문자
upper과 lower를 통해 대문자, 소문자를 바꿀 수 있다.
외장함수(External functions)
import random
random.randint(1, 10)
외장함수는 import를 통해 가져온다. 1,10까지 중에 임의의 숫자를 가져오는 것을 확인할 수 있다.
a = [1,1,1,1,1,1,2,2,2,2,2,2,3,3,4,4,5,6]
random.choice(a)
choice를 통해 무작위로 하나를 뽑아온다.
import sys
if sys.version < 3.12:
print('파이썬을 업데이트 하시오.')
Python 인터프리터 및 실행 환경에 대한 정보와 함수를 제공하는 핵심 모듈이다.
import os
os.getcwd()
Python에서 운영 체제와 상호 작용하는 데 필요한 기능을 제공하는 핵심 모듈이고, getcwd는 현재 디렉터리 위치이다.
클래스
class FishBread: # Camel Case
# 초기화 => 생성자 => 클래스가 호출됐을 때 가장 먼저 실행되는 함수(메소드)
def __init__(self, name, ingredient):
self.name = name
self.ingredient = ingredient
def bread(self):
print(f"붕어빵의 이름은 {self.name}, 재료는 {self.ingredient}")
redbean_bread = FishBread('팥붕어빵', '팥')
redbean_bread.name
redbean_bread.ingredient
redbean_bread.bread()
sucream_bread = FishBread("슈크림 붕어빵", "슈크림")
sucream_bread.name
sucream_bread.ingredient
sucream_bread.bread()
redbean_bread # 인스턴스(객체)
redbean_bread.name
redbean_bread.bread()
클래스는 함수의 모음이다.
클래스를 선언해 줄떄는 __init__ 함수를 실행해줘야 하고, self를 사용해주어야 한다. 그리고 각각의 변수에 함수를 저장해 주고,. name같이. 을 통해 변수를 출력해 줄 수 있다.
웹크롤링
!pip3 install selenium --use-feature=2020-resolver
!pip3 install webdriver-manager --use-feature=2020-resolver
필요한 패키지를 설치해준다.
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
그리고 각각의 패키지로부터 모듈을 임포트 해준다.
ChromeDriverManager().install()
그리고 설치해 준다.
browser = webdriver.Chrome()
위의 명령어를 실행하면 아래와 같이 브라우저가 하나 열린다.
url = 'https://www.naver.com'
browser.get(url)
위의 명령어를 입력하면 naver가 나온다.
browser.title
'NAVER'
tile이 네이버가 됨을 확인할 수 있다.
from selenium.webdriver.common.by import By
browser.find_element(By.CLASS_NAME,'search_input').click()
browser.find_element(By.CLASS_NAME,'search_input').send_keys('날씨')
날씨가 입력됨을 볼 수 있다.
browser.find_element(By.CLASS_NAME,'btn_search').click()
똑같은 방식으로 검색버튼의 클래스 불러와 클릭할 수 있다.
temp = browser.find_element(By.CLASS_NAME,'temperature_text').text
위와 같이 text를 붙여서 해당 문자를 불러올 수 있다.
browser.find_element(By.CLASS_NAME, 'complex_price--trade').find_element(By.CLASS_NAME, 'data').text
만약에 클래스 안에 하위 클래스를 또 불러오고 싶다면 find_element를 더 붙여주면 된다.
후기
국비지원이라고 해서 허술한 강의가 아니라 진짜 최고의 강의라고 생각한다. 보통 국비지원은 진도 빼기 혹은 이해 안돼도 그냥 넘어가는 형식이 많은데 패스트캠퍼스 xUpstage과정은 이해하고 끊임없이 알려주려고 노력하신다.
강사님도 프로페셔널하셔서 인싸이트도 많이 알려주시고, 여태까지 정리 안되었던 파이썬 문법도 정리가 깔끔하게 된 것 같다. 인공지능에 관심이 많다면 fastcampus&upstage과정을 강력추천한다.