오늘은 파이썬 기초부터 시작한다.
어제는 기말고사 이슈로 참여를 못했으니 열심히 따라가야겠다.
일단 가볍게 프로그래밍에 대해 리마인딩
파이썬으로 할 수 있는 것
파이썬을 배우는 이유
인공지능이 인기인 이유
- 숫자형 (Number) - 123
- 문자형 (String) - "word", ‘word’
- 리스트형 (List) - ["12", "24", "566", 123, [123] ]
- 튜플형(Tuple), 딕셔너리형(Dict, {”key”:”value”}), 집합형(Set)
- 불형 (Boolean) - True, False
a = 1
a = -1
a = 123123
a = 1.0
a = -1.2
a = -123123.2
a = 1 + 1
a = 10 - 2
a = 3 * 4
a = 100 / 5
a = "python"
type(a)
>>> str
1. \n 사용
a = "Act as though \nit is impossible to fall"
2. """str""" 혹은 '''str'''
a = '''Act as though
it is impposible to fall
"""
1. ' 또는 " 바로 앞에 \ 를 삽입
a = 'It\'s kind of fun to do the impossible'
2. ""로 문자열 만들기
b = "It's kind of fun to do the impossible"
(더하기)
"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)
a = “Act as though it is impossible to fail”
len(a)
>>> 38
문자열을 분리할 때 사용
x = “hello python!”
x[0:5] => hello
x[6:11] => python
x[12] 또는 x[-1] => !
여러 변수를 한번에 담아 사용
대괄호[]로 감싸고 각 요소 사이를 , 로 구분
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)
리스트형과 거의 비슷하고 괄호()로 생성
t = ()
t = (“a”, “b”, “c”, “d”, “e”)
t = (“Hello”, “Python”)
t = (1, 2, 3, (“a”, “b”))
튜플형도 인덱싱과 슬라이싱이 가능
튜플형도 더하고 곱하기가 가능
리스트형은 요소값 수정이 가능하나 튜플은 값 수정이 불가능
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”]}
단, 키는 중복이 안된다.
집합은 순서가 없고 인덱스가 없음
set()을 사용해 생성
x = set([5,2,1])
x = set(‘abcde’)
x = set(‘abccccde’)
참과 거짓
True
False
조건이 참이면 실행, 거짓이면 다음 조건문 실행
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("걸어가세요.)
조건문에 값을 비교할 때 사용
조건이 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("두 조건 중 하나만 참이어도 조건문 실행")
같은 동작을 반복할 때 사용
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 조건문:
실행할 문장
*조건문이 참인 경우에 문장이 반복되서 실행
예시
a = 0
while a<5:
무한루프
while a<5:
a += 1
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))
반복 중 중간에 넘어가거나 반복을 멈출 때 사용
(1) for문
for 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 숫자를 건너뛴다.
(1) for문
for 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까지만 표현이 되고 반복문이 종료된다.
프로그래밍 중 반복적으로 생성되는 코드를 재활용 하고 싶을 때 사용
호출시에만 실행되는 일련의 코드 블록을 의미
100줄짜리 코드 vs 20줄 짜리 5개의 함수
-> 디버깅이 빨라짐
함수 구조
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)
파이썬에 내장되어 기본적으로 제공하는 함수
(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()의 실수값을 연,월,일,시,분,초...의 값으로 리턴
파이썬은 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()
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()
정상적으로 설치되어서 엣지 실행까지 성공
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
환율 데이터 획득 성공