오늘은 파이썬 기초부터 시작한다.
어제는 기말고사 이슈로 참여를 못했으니 열심히 따라가야겠다.

1. 프로그래밍이란

일단 가볍게 프로그래밍에 대해 리마인딩

2. 왜 파이썬인가?

  • 파이썬으로 할 수 있는 것

    1. 업무자동화
    2. 크롤링
    3. 서비스 구현
    4. 데이터 분석
    5. 머신러닝
  • 파이썬을 배우는 이유

    1. 쉽다
    2. 다양한 라이브러리
  • 인공지능이 인기인 이유

    1. 파이썬으로 인한 낮아진 진입장벽
    2. 데이터 저장 기술의 발전 및 저장 비용 감소
    3. AI를 활용한 비즈니스 모델의 성공 사례 증가
    4. 인공지능을 통한 자동화 영역 증가

3. 파이썬 자료형

  1. 숫자형 (Number) - 123
  2. 문자형 (String) - "word", ‘word’
  3. 리스트형 (List) - ["12", "24", "566", 123, [123] ]
  4. 튜플형(Tuple), 딕셔너리형(Dict, {”key”:”value”}), 집합형(Set)
  5. 불형 (Boolean) - True, False

1. 숫자형(Number)

1) 정수형(Integer)


a = 1
a = -1
a = 123123

2) 실수형


a = 1.0
a = -1.2
a = -123123.2

특징

  • 사칙연산이 가능
a = 1 + 1
a = 10 - 2
a = 3 * 4
a = 100 / 5

2. 문자형(String)

  • 큰 따옴표 혹은 작은 따옴표로 감싸져있음
a = "python"
type(a)
>>> str

문자형 다루기

1) 여러 줄을 나타낼 때

1. \n 사용

a = "Act as though \nit is impossible to fall"

2. """str""" 혹은 '''str'''

a = '''Act as though
it is impposible to fall
"""

2) 문자열 안에 ' 가 있는 경우

1. ' 또는 " 바로 앞에 \ 를 삽입
a = 'It\'s kind of fun to do the impossible'

2. ""로 문자열 만들기
b = "It's kind of fun to do the impossible"

3) 문자열 연산

(더하기)
"Life"
a= "L"
b= "i"
c = "f"
d = "e"
a+b+c+d

a = "Life"
b = "is good"
a + b

(곱하기)
a = “Life\n”
print(a*10)

4) 문자열 길이 구하기

a = “Act as though it is impossible to fail”
len(a)
>>> 38

5) 문자열 인덱싱

6) 문자열 슬라이싱

문자열을 분리할 때 사용

x = “hello python!”
x[0:5] => hello
x[6:11] => python
x[12] 또는 x[-1] => !

3. 리스트형(List)

여러 변수를 한번에 담아 사용

대괄호[]로 감싸고 각 요소 사이를 , 로 구분

x = [“a”, “b”, “c”, “d”, “e”]

x = [“Hello”, “Python”]

x = [1, 2, 3, [“a”, “b”]]

값 추가 및 삭제

x = ["a", "b", "c", "d", "e"]

x.append("f") # 요소 추가
del x[0] # 요소 삭제

값 정렬

number_list = [4, 2, 7, 1, 5]
sorted_list = sort_list(number_list)

특징

  1. 리스트형도 인덱싱, 슬라이싱이 가능
  2. 사칙연산 가능

4. 튜플형(tuple)

리스트형과 거의 비슷하고 괄호()로 생성

t = ()

t = (“a”, “b”, “c”, “d”, “e”)

t = (“Hello”, “Python”)

t = (1, 2, 3, (“a”, “b”))

특징

  1. 튜플형도 인덱싱과 슬라이싱이 가능

  2. 튜플형도 더하고 곱하기가 가능

  3. 리스트형은 요소값 수정이 가능하나 튜플은 값 수정이 불가능

5. 딕셔너리형(Dict)

Dict -> Dictionary = 사전

  • {단어 : 뜻} 의 형태

중괄호 {} 내에 키와 밸류로 구성

괄호 안에 키와 벨류로 구성되어 있는 형태
{Key1:Value1, Key2:Value2, Key3:Value3, ...}

x = {“name” : “tony”, “age” :25, “country” : “korea”}
print(x[“name”])

value에는 리스트 형태도 가능
x = {“name” : “tony”, “age” :25, “country” : [“korea”, “usa”]}, 키는 중복이 안된다.

6. 집합형(Set)

집합은 순서가 없고 인덱스가 없음

set()을 사용해 생성

x = set([5,2,1])
x = set(‘abcde’)

x = set(‘abccccde’)

특징

  1. 순서를 갖지 않음
  2. 중복을 허용하지 않음

7. 불형(Boolean)

참과 거짓

True
False

4. 제어문

1. 조건문 (if)

조건이 참이면 실행, 거짓이면 다음 조건문 실행

if 조건문:
	실행할 코드 ( if 조건문이 참일 때)
elif 조건문:
	실행할 코드 ( elif 조건문이 참일 때)
else:
	실행할 코드 (모든 if, elif 조건문이 거짓일 때)

콜론 : 은 다음 줄에 문법이 이어지는 것을 알려줌
들여쓰기, space 4번 of tab키

참 거짓을 판별하는 문장

number = 1
if number < 5 :
    print("숫자가 5보다 작습니다.")

조건문: number < 5 # True

if number <5: print("숫자가 5보다 작습니다.")

number = int(input("숫자를 입력하세요"))

if number < 5 :
    print("숫자가 5보다 작습니다.")
elif number < 10:
		print("숫자가 10보다 작습니다.")
elif number < 15:
		print("숫자가 15보다 작습니다.")
else:
		print("숫자가 15보다 큽니다.")
        

예제


if => 만약에
elif => 그렇지 않으면 만약에
else => 그렇지 않으면

서울에서 부산을 간다고 가정하에 나의 주머니에 있는 돈(money)에 따른 조건문
if => 7만원 있으면 비행기를 타고
elif => 5만원 있으면 기차를 타고
elif => 3만원 있으면 버스를 타고
else => 걸어간다.

money = int(input("숫자를 입력하세요"))


if money == 70000:
		print("비행기를 타고 가세요.)
elif money == 50000:
		print("기차를 타고 가세요.)
elif money == 30000:
		print("버스를 타고 가세요.)
else:
		print("걸어가세요.)
        

비교연산자

조건문에 값을 비교할 때 사용

  • a와 b가 같다 : a == b
  • a와 b가 같지 않다 : a != b
  • a가 b보다 작다 : a < b
  • a가 b보다 작거나 같다 : a <= b
  • a가 b보다 크다 : a > b
  • a가 b보다 크거나 같다 : a >= b

and, or 연산자

조건이 2가지 이상인 경우

if 돈이 10만원 이상 있고 그리고(and) 비행기 항공편이 존재하면 비행기를 탄다.

elif 돈이 10만원 이상 있고 그리고(and) 기차편이 존재하지 않으면 기차를 탄다.

and
(1)
money = 100000
airplane = False

if money >= 100000 and airplane == True:
		print("비행기를 타세요.")
elif money >= 100000 or airplane == True:
		print("기차를 타세요.")

조건문
(1) money >=100000
(2) airplane


(2)
a = 100
b = 1
c = 1000

a > b # 
c > a # 

if a > b and c > a:
		print("두 조건 모두 참, 조건문 실행")
        
        
or
a = 100
b = 1
c = 1000

a > b #
a > c # 

if a > b or a > c:
		print("두 조건 중 하나만 참이어도 조건문 실행")
        

2. 반복문(for, while)

같은 동작을 반복할 때 사용

for

for문의 기본 형태

for 변수 in 리스트(또는 튜플, 문자열):
    실행할 문장1

예시

for i in range(10):
	print("hello world", i)

range(1, 10) -> 1<= i <10

기타형태


for i in range(1, 10, 3): 

0에서 9까지 3씩 증가

for i in "python":

문자열 내 글자 하나씩을 받음

cities = ['seoul', 'daejeon', 'daegu', 'busan']

for i in cities:

리스트의 원소를 하나씩 받음

while

기본 구조

while 조건문:
		실행할 문장

*조건문이 참인 경우에 문장이 반복되서 실행

예시

a = 0

while a<5:

무한루프

while a<5:
	a += 1

for와 while의 비교

Q.1부터 5까지 더하는 프로그램을 만들어보시오.

(1) 단순 덧셈
result = 1 + 2 + 3 + 4 + 5

(2) for문
result = 0
for i in range(6):
		result = result + i
		print(str(i) + "번째 반복, 결과값 : " + str(result))


(3) while문
result = 0
i = 0
while i < 6:
		result = result + i
		i += 1
		print(str(i) + "번째 반복, 결과값 : " + str(result))

3. 제어문(continue, break)

반복 중 중간에 넘어가거나 반복을 멈출 때 사용

continue

(1) forfor i in range(10):
		if 3<= i <= 5:
				continue
		print(i)


(2) while 문
i = 0

while i < 10:
		i += 1	
		if 3<= i <=5:
			continue
		print(i)

3~5 숫자를 건너뛴다.

break

(1) forfor i in range(6):
		if i == 3:
				break
		print(i)


(2) while 문
i = 0

while i < 6:
  print(i)
  i += 1
  if i == 3:
    break

3에서 break를 만나기 때문에 숫자 3까지만 표현이 되고 반복문이 종료된다.

5. 함수(def)

프로그래밍 중 반복적으로 생성되는 코드를 재활용 하고 싶을 때 사용
호출시에만 실행되는 일련의 코드 블록을 의미

100줄짜리 코드 vs 20줄 짜리 5개의 함수
-> 디버깅이 빨라짐

1. 파이썬 함수

함수 구조

def name(variable):
	code

기본적인 함수

(1) 함수 정의
def name():
		print("함수 생성")

*파이썬 파일을 실행해도 함수는 실행이 안됨.

(2) 함수 실행
name()

예시

(1) 매개변수가 있는 함수 
def my_name(name):
		print("제 이름은 " + name + "입니다.")

my_name("@@")

(2) 매개변수 지정도 가능
def my_name(name = "@@"):
		print("제 이름은 " + name + "입니다.")

(3) 리턴(return)이 있는 함수
def sum(a, b): # a,b를 매개변수 (parameter)
		result = a + b
		return a+b

sum(3,4) # 3, 4를 인수 (arguments)
sum(a=3, b=4)

예제

def grade(name, score):
    if(score>=90):
        return name + " : A"
    elif(score>=80):
        return name + " : B"
    elif(score>=70):
        return name + " : C"
    elif(score>=60):
        return name + " : D"
    else:
        return name + " : F"
    
    
a = grade("김", 65)

print(a)

2. 파이썬 내장함수 / 외장함수

내장함수(Built-in function)

파이썬에 내장되어 기본적으로 제공하는 함수

  • 자주 사용하는 내장함수
(1) abs(), 입력받은 숫자를 절대값으로 표현

abs()
abs("python")
abs(1)
abs(-12313)
abs(-4.5)

(2) upper(), 소문자를 대문자로 바꾸기
a = "python"
a.upper()
print(a)

lower(), 대문자를 소문자로
a.lower()

(3) str(), int(), 타입을 변경할 때 사용
a = 3
print(a + "은 정수입니다.")

a = "3"
b = 6
print(a + b)

(4) divmod(a, b), a를 b로 나눈 몫과 나머지를 튜플 형태로 반환
divmod(12,3)
=> 12//3(), 12%3 (나머지)

(5) join()
# 문자열 삽입
",".join("korea")

# 리스트에 특정 문자를 넣은 뒤 문자열(String)로 변환
countries = ["korea", "america", "japan", "china"]
a = ",".join(countries)
print(a)

(5) split()
# 문자열(String)을 특정 문자를 기준으로 리스트(List)로 변환
country = a.split(",")
print(country)

ex)
city = ["seoul", "daegu", "busan"]
a = "===".join(city)
print(a)

city = a.split("===")
print(city)

word = "title1,tile2,tile3,title4"
word.split(",")

(6) format
word = "python"

print("I love python")
print("I love {}".format(word)

name = "fast"
city = "seoul"
age = 30

print("my name is {}, i lived in {}, i'm {} years old".format(name, city, age)

외장함수

import문을 통해 외부의 라이브러리에서 가져온 함수

파이썬 기본 라이브러리는 파이썬 설치시 자동 설치

예시

(1) random

random.random() # 0~1.0 사이의 실수 중에서 난수(무작위로 추출된 숫자)값 리턴
random.randint(1, 10) # 1~10 사이의 정수 중에서 난수값 리턴

a = [1,2,3,4,5]
random.choice(a) # list 값 중 무작위로 하나를 선택하여 리턴
random.shuffle(a) # list를 무작위로 섞는다.

(2) sys
파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 도와주는 라이브러리

sys.argv # 파이썬 실행시 파일 뒤에 붙여준 어떠한 값들이 리스트의 값으로 추가됨.
sys.exit() # 프로그램을 종료시키고 싶은 곳에서 사용
sys.path # 파이썬 라이브러리들이 설치되어 있는 위치
sys.version # 파이썬 버전

(4) os
시스템(OS)의 환경변수, 파일경로 등의 값을 제어할 떄 사용
os.environ
os.getcwd() # cwd => current working directory
os.chdir("경로") # 현재 디렉토리 위치 변경

os.mkdir("new_folder") # 폴더생성
os.rename("new_folder", "old_folder")
os.rmdir("new_folder")

(5) time

time.time() # UTC기준 현재시간을 실수값으로 리턴
time.localtime(time.time()) # time.time()의 실수값을 연,월,일,시,분,초...의 값으로 리턴

3. 클래스(class)

파이썬은 oop를 지원
클래스는 oop의 가장 기본 단위

  • 클래스 정의
class FishBread:
		def redbean_bread(self):
			print("이 붕어빵은 " + self.name + " 입니다.")

		def sucream_bread(self):
			print("이 붕어빵은 " + self.name + " 입니다.")
  • 클래스 호출
a = FishBread() # 클래스 호출
type(a) # 클래스

a.redbean_bread() # 클래스 내 함수(메소드)에 접근
a.name # 클래스 내 변수(속성)에 접근

클래스 내에 정의 되는

  • 변수를 속성
  • 함수를 메소드라 부른다.

예시

class FishBread:
	# 생성자 => 클래스가 호출될 때 가장 먼저 실행되는 메소드
	def __init__(self, name, ingredient, price):
		self.name = name
		self.ingredient = ingredient
		self.price = price

	def bread(self):
		print("이 붕어빵의 이름은 {}이고, {}이 들어가있습니다. 가격은 {} 입니다.".format(self.name, self.ingredient, self.price))


redbean_bread = FishBread("팥붕어빵", "팥", 500)
redbean_bread.bread()
print(redbean_bread.name)
print(redbean_bread.ingredient)
print(str(redbean_bread.price))

cream_bread = FishBread("슈크림 붕어빵", "크림", 700)
cream_bread.bread()

pizza_bread = FishBread("피자 붕어빵", "피자", 1000)
pizza_bread.bread()

웹 크롤링 실습

1. 개발 환경 설정

  • 셀레니움 및 드라이버 설치
from selenium import webdriver
selenium.__version__

from selenium.webdriver.edge.service import Service as EdgeService
from webdriver_manager.microsoft import EdgeChromiumDriverManager

EdgeChromiumDriverManager().install()
driver = webdriver.Edge()

정상적으로 설치되어서 엣지 실행까지 성공

2. 간단한 크롤링 실습

browser = webdriver.Edge()

url = 'https://www.naver.com'
browser.get(url)

네이버 창 띄우기 성공

from selenium.webdriver.common.by import By

browser.find_element(By.ID, 'query').click()
browser.find_element(By.ID, 'query').send_keys('날씨')

검색창 클릭 후 날씨 입력

browser.find_element(By.ID, 'search-btn').click()

data = browser.find_element(By.CLASS_NAME, 'temperature_text').text

data.split('\n')[1]

검색 버튼 클릭 후 날씨 데이터 읽어오기

데이터 획득 성공

rate = 'https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%8B%AC%EB%9F%AC'

browser.get(rate)

환율 정보 확인을 위해 페이지 이동

browser.find_element(By.CLASS_NAME, 'price_info').find_element(By.TAG_NAME, 'strong').text

환율 데이터 획득 성공

0개의 댓글

관련 채용 정보