요즘 IT의 핫한 핵심 키워드가 모두 데이터와 관련되어 있다.
ex) 머신러닝, 딥러닝, 데이터 마이닝, 빅 데이터, 인공지능 등
한때는 작은 범위를 말했던 데이터 사이언스가 이제는 저 키워드를 다 삼키는 것을 넘어서 비즈니스와 마케팅, 의학, 스포츠등으로 다른 영역까지 침투하고 있습니다.
데이터는 현 시대를 사는 모든 사람을 관통하는 키워드가 되었다.
이렇게 우리가 데이터가 중요한 세상에 살고 있는데 어떡해야 데이터를 소유하고, 어떻게 데이터를 다룰까에 대해서 고민을 해보면 그 답은 '파이썬' 에 있다.
데이터를 다룰 때 가장 많이 쓰는 언어가 파이썬이다.
파이썬은 데이터와 함께 성장하고 있는 언어이다.
데이터의 중요성이 부각되기 이전 파이썬은 그냥 흔한 언어 중 하나였다.
그런데 데이터 처리 관련 능력이 급격히 발전하면서 이제 파이썬은 독자적인 위치로 급부상을 했고, 지금은 사실 대체 불가능한 영역까지 올라와 있다.
데이터가 다양한 영역으로 확장되면서 파이썬도 똑같이 다양한 영역으로 확장을 하고 있다.
따라서 현재 가장 대중화된 언어 중 하나이자 가장 좋은 평가를 받고 있는 언어 중에 하나이다.
현재 가장 큰 클라우드 서비스인 아마존 클라우드가 파이썬을 전폭적으로 지원하고 있다.
아마존 뿐만 아니라, 다른 대형 IT 회사들이 파이썬을 기본 제공하고 있고, 다른 언어를 옵션으로 두는 경우가 굉장히 많다.
따라서 파이썬을 할 수 있는 사람이 최첨단 기술을 남들보다 빠르게 접할 수 있게 되는 것이다.
하지만 파이썬의 장점은 이런 기술적인 이야기를 다 떠나서 파이썬 생태계가 아주 크다는 점에 있다.
이미 오픈 소스로 선개발된 프로그램이 많아서 코드 한줄, 한줄을 우리가 직접 짜지 않고 남이 가져다준걸 쓸 수 있다.
1. 즉, 오픈 소스 활용 폭이 굉장히 넓다.
2. 또한 활성화된 온/오프라인 커뮤니티가 굉장히 많아서 질문 답변이 쌓인 양이 다른 언어에 비해 굉장히 풍부하다. 그래서 코딩하다가 헤매는 상황을 빠르게 탈출이 가능하다!
3. 거기에 더해서 행사도 굉장히 많아서 비슷한 작업을 하는 사람을 굉장히 쉽게 만날 수 있는데 이런 것은 정말 다른 언어에서 누릴 수 없는 굉장히 큰 장점이다.
4. 파이썬을 사용하는 회사가 많아서 직장을 선택할 때 폭이 넓은 편이다.
예시
import random //import 모듈
print(random.choice(["된장찌개","피자","제육볶음"]))
파이썬 코드 실행 방법
python 파일명.py
import random
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
print(random.choice(["된장찌개","피자","제육볶음","치킨","떡볶이","라면"]))
치킨
된장찌개
된장찌개
라면
제육볶음
치킨
피자
피자
된장찌개
라면
된장찌개
된장찌개
제육볶음
떡볶이
피자
떡볶이
피자
피자
라면
치킨
피자
떡볶이
라면
치킨
치킨
제육볶음
제육볶음
떡볶이
피자
떡볶이
문제점
형식
for 변수 in 리스트(또는 튜플, 문자열):
코드
import random
for x in range(30):
print(random.choice(["된장찌개","제육볶음","치킨","떡볶이","라면"]))
결과
치킨
치킨
된장찌개
라면
된장찌개
된장찌개
치킨
제육볶음
떡볶이
된장찌개
된장찌개
제육볶음
라면
제육볶음
제육볶음
라면
라면
제육볶음
라면
제육볶음
떡볶이
치킨
제육볶음
라면
된장찌개
떡볶이
라면
떡볶이
치킨
된장찌개
예시1
import random
for x in range(30):
print(random.choice(["된장찌개","제육볶음","치킨","떡볶이","라면"]))
print("이 문장도 반복되나")
결과
치킨
치킨
된장찌개
라면
된장찌개
된장찌개
치킨
제육볶음
떡볶이
된장찌개
된장찌개
제육볶음
라면
제육볶음
제육볶음
라면
라면
제육볶음
라면
제육볶음
떡볶이
치킨
제육볶음
라면
된장찌개
떡볶이
라면
떡볶이
치킨
된장찌개
이 문장도 반복되나
예시2
import random
for x in range(30):
print(random.choice(["된장찌개","제육볶음","치킨","떡볶이","라면"]))
print("이 문장도 반복되나")
결과
된장찌개
이 문장도 반복되나
제육볶음
이 문장도 반복되나
라면
이 문장도 반복되나
된장찌개
이 문장도 반복되나
제육볶음
이 문장도 반복되나
된장찌개
이 문장도 반복되나
된장찌개
이 문장도 반복되나
된장찌개
이 문장도 반복되나
떡볶이
이 문장도 반복되나
된장찌개
이 문장도 반복되나
제육볶음
이 문장도 반복되나
라면
이 문장도 반복되나
제육볶음
이 문장도 반복되나
치킨
이 문장도 반복되나
제육볶음
이 문장도 반복되나
치킨
이 문장도 반복되나
제육볶음
이 문장도 반복되나
라면
이 문장도 반복되나
치킨
이 문장도 반복되나
제육볶음
이 문장도 반복되나
된장찌개
이 문장도 반복되나
된장찌개
이 문장도 반복되나
떡볶이
이 문장도 반복되나
제육볶음
이 문장도 반복되나
라면
이 문장도 반복되나
제육볶음
이 문장도 반복되나
라면
이 문장도 반복되나
라면
이 문장도 반복되나
된장찌개
이 문장도 반복되나
된장찌개
이 문장도 반복되나
결론
형식
while 조건문:
적용코드
코드
import random
while True:
print(random.choice(["된장찌개","치킨","떡볶이","라면","감자튀김"]))
print("이 문장도 반복되나")
코드수정
import random
import time
while True:
print(random.choice(["된장찌개","치킨","떡볶이","라면","감자튀김"]))
print("이 문장도 반복되나")
time.sleep(1)
코드수정2 - break 사용
import random
import time
while True:
print(random.choice(["된장찌개","치킨","떡볶이","라면","감자튀김"]))
break
print("이 문장도 반복되나")
time.sleep(1)
코드
import random
lunch = random.choice(["된장찌개","피자","제육볶음"])
dinner = random.choice(["김밥","쫄면","돈까스"])
print(lunch)
결과
피자
Dictionary란?
: 사전(dictionary)은 파이썬에서 리스트(list)와 더불어 가장 많이 사용되는 내장 데이터 타입 중 하나이다.
코드
information = {"고향":"수원", "취미":"영화관람", "좋아하는 음식":"국수"}
print(information)
print(information.get("취미"))
결과
{'고향': '수원', '취미': '영화관람', '좋아하는 음식': '국수'}
영화관람
< 특정값 가져오기 >
코드
information = {"고향":"수원", "취미":"영화관람","좋아하는 음식":"국수"}
print(information.get("취미"))
결과
영화관람
< 값 추가 >
코드
information = {"고향":"수원", "취미":"영화관람","좋아하는 음식":"국수"}
information["특기"] = "피아노"
information["사는곳"] = "서울"
print(information)
결과
{'고향': '수원', '취미': '영화관람', '좋아하는 음식': '국수', '특기': '피아노', '사는곳': '서울'}
< 값 삭제 >
코드
information = {"고향":"수원", "취미":"영화관람","좋아하는 음식":"국수"}
del information["좋아하는 음식"]
print(information)
결과
{'고향': '수원', '취미': '영화관람'}
< key, value 쌍 갯수 출력 >
코드
information = {"고향":"수원", "취미":"영화관람","좋아하는 음식":"국수"}
print(len(information))
결과
3
< 값 모두 삭제 >
코드
information.clear()
print(information)
결과
{}
< 특정 값 읽기 >
코드
foods = ["된장찌개", "피자", "제육볶음"]
print(foods[-2])
결과
피자
< 값 추가 >
코드
foods = ["된장찌개", "피자", "제육볶음"]
foods.append("김밥")
print(foods)
결과
['된장찌개', '피자', '제육볶음', '김밥']
< 값 삭제 >
코드
foods = ["된장찌개", "피자", "제육볶음"]
del foods[1]
print(foods)
결과
['된장찌개', '제육볶음']
코드
information = {"고향":"수원", "취미":"영화관람", "좋아하는 음식":"국수"}
for x, y in information.items():
print(x)
print(y)
결과
고향
수원
취미
영화관람
좋아하는 음식
국수
코드
foods = ["된장찌개", "피자", "제육볶음"]
for x in range(3):
print(foods[x])
결과
['된장찌개', '피자', '제육볶음']
수정된 코드
foods = ["된장찌개", "피자", "제육볶음"]
for x in foods:
print(x)
결과
['된장찌개', '피자', '제육볶음']
information = ["된장찌개","피자","제육볶음"]
information.append("된장찌개")
-> 위와 같이 코드를 작성하게 되면 한 리스트에 데이터(된장찌개)가 중복된다.
이때 필요한 것이 집합이다.
합집합 연산
차집합 연산
교집합 연산
리스트를 set()으로 감싸면 어떻게 될까?
코드
foods = ["된장찌개", "피자", "제육볶음"]
foods_set1 = set(foods)
print(foods_set1)
결과
{'피자', '된장찌개', '제육볶음'}
코드
foods = ["된장찌개", "피자", "제육볶음", "된장찌개"]
foods_set = set(foods)
print(foods)
print(foods_set)
결과
['된장찌개', '피자', '제육볶음', '된장찌개']
{'제육볶음', '피자', '된장찌개'}
< 합집합 >
코드
menu1 = set(["된장찌개", "피자", "제육볶음"])
menu2 = set(["된장찌개", "떡국", "김밥"])
menu3 = menu1 | menu2
print(menu3)
결과
{'피자', '제육볶음', '김밥', '된장찌개', '떡국'}
< 교집합 >
코드
menu1 = set(["된장찌개", "피자", "제육볶음"])
menu2 = set(["된장찌개", "떡국", "김밥"])
menu3 = menu1 & menu2
print(menu3)
결과
{'된장찌개'}
< 차집합 >
코드
menu1 = set(["된장찌개", "피자", "제육볶음"])
menu2 = set(["된장찌개", "떡국", "김밥"])
menu3 = menu1 - menu2
print(menu3)
결과
{'피자', '제육볶음'}
import random
food = random.choice(["된장찌개","피자","제육볶음"])
print(food)
if(food == "제육볶음"):
print("곱배기 주세요")
else:
print("그냥 주세요")
print("종료")
코드
lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]
item = input("음식을 추가 해주세요 : ")
lunch.append(item)
print(lunch)
결과
음식을 추가 해주세요 : 돈까스
['된장찌개', '피자', '제육볶음', '짜장면', '돈까스']
코드
lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]
while True:
print(lunch)
item = input("음식을 추가 해주세요 : ")
if(item == "q"):
break
else:
lunch.append(item)
print(lunch)
결과
['된장찌개', '피자', '제육볶음', '짜장면']
음식을 추가 해주세요 : 돈까스
['된장찌개', '피자', '제육볶음', '짜장면', '돈까스']
음식을 추가 해주세요 : q
['된장찌개', '피자', '제육볶음', '짜장면', '돈까스']
set_dinner = set(["된장찌개", "피자", "제육볶음", "짜장면"])
food = "짜장면"
print(set_dinner - food)
수정된 코드
set_dinner = set(["된장찌개", "피자", "제육볶음", "짜장면"])
food = "짜장면"
print(set_dinner - set([food]))
print(set_dinner)
결과
{'피자', '제육볶음', '된장찌개'}
{'피자', '제육볶음', '된장찌개', '짜장면'}
수정된 코드
set_dinner = set(["된장찌개", "피자", "제육볶음", "짜장면"])
food = "짜장면"
set_dinner = set_dinner - set([food])
print(set_dinner)
결과
{'피자', '제육볶음', '된장찌개'}
코드
import random
import time
lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]
while True:
print(lunch)
item = input("음식을 추가 해주세요 : ")
if(item == "q"):
break
else:
lunch.append(item)
print(lunch)
set_lunch = set(lunch)
while True:
print(set_lunch)
item = input("음식을 삭제해주세요 : ")
if(item == "q"):
break
else:
set_lunch = set_lunch - set([item])
print(set_lunch, "중에서 선택합니다.")
print("5")
time.sleep(1)
print("4")
time.sleep(1)
print("3")
time.sleep(1)
print("2")
time.sleep(1)
print("1")
time.sleep(1)
print(random.choice(list(set_lunch)))
결과
['된장찌개', '피자', '제육볶음', '짜장면']
음식을 추가 해주세요 : 돈까스
['된장찌개', '피자', '제육볶음', '짜장면', '돈까스']
음식을 추가 해주세요 : q
['된장찌개', '피자', '제육볶음', '짜장면', '돈까스']
{'피자', '된장찌개', '돈까스', '제육볶음', '짜장면'}
음식을 삭제해주세요 : 된장찌개
{'제육볶음', '짜장면', '돈까스', '피자'}
음식을 삭제해주세요 : q
{'제육볶음', '짜장면', '돈까스', '피자'} 중에서 선택합니다.
5
4
3
2
1
피자
최종코드 리뷰
import random //메뉴를 랜덤으로 뽑기 위해 import
import time //초를 세기 위해 import
lunch = ["된장찌개", "피자", "제육볶음", "짜장면"] //리스트 형태로 메뉴 저장
while True: //무한루프
print(lunch)
item = input("음식을 추가 해주세요 : ") //메뉴를 입력받는다.
if(item == "q"):
break //사용자 입력이 q이면 반복문 종료
else:
lunch.append(item) //사용자 입력이 q가 아닌 경우 리스트에 추가
print(lunch)
set_lunch = set(lunch) //리스트를 집합으로 변경해 중복제거
while True:
print(set_lunch)
item = input("음식을 삭제해주세요 : ")
if(item == "q"):
break
else:
set_lunch = set_lunch - set([item]) //차집합을 통해 요소 삭제
print(set_lunch, "중에서 선택합니다.") //,(콤마)로 변수와 문자열을 동시 출력할 수 있다.
print("5")
time.sleep(1) //1초 쉬기
print("4")
time.sleep(1)
print("3")
time.sleep(1)
print("2")
time.sleep(1)
print("1")
time.sleep(1)
print(random.choice(list(set_lunch))) //랜덤으로 메뉴 최종 선정
돌체라떼 레시피
-> 이 레시피(함수가 해야 할 내용)대로 만드는 돌체라떼 기계가 바로 함수이다.
함수 형식
def 함수이름():
함수가 해야 할 내용 1
함수가 해야 할 내용 2
...
예시
def make_dolcelatte():
print("1. 얼음을 넣는다.")
print("2. 연유를 30ml 넣는다.")
print("3. 찬 우유를 넣는다.")
print("4. 에스프레소샷을 넣는다.")
def make_blueberry_smoothie():
print("1. 블루베리 20g을 넣는다.")
print("2. 우유 300ml를 넣는다.")
print("3. 얼음을 넣는다.")
print("4. 믹서기에 간다.")
def make_simple_latte():
print("1. 커피를 넣는다.")
print("2. 우유를 넣는다.")
print("3. 신나게 섞는다.")
-> 이대로 파일을 실행해도 아무것도 출력되지 않는다.
왜? 함수를 호출해야 함수가 동작한다.
함수 호출 방법
함수이름()
함수 호출 코드
def make_dolcelatte():
print("1. 얼음을 넣는다.")
print("2. 연유를 30ml 넣는다.")
print("3. 찬 우유를 넣는다.")
print("4. 에스프레소샷을 넣는다.")
def make_blueberry_smoothie():
print("1. 블루베리 20g을 넣는다.")
print("2. 우유 300ml를 넣는다.")
print("3. 얼음을 넣는다.")
print("4. 믹서기에 간다.")
def make_simple_latte():
print("1. 커피를 넣는다.")
print("2. 우유를 넣는다.")
print("3. 신나게 섞는다.")
make_simple_latte()
결과
1. 커피를 넣는다.
2. 우유를 넣는다.
3. 신나게 섞는다.
우리는 익명 게시판에서 받은 질문과 답변을 모두 저장할 것이다.
질문을 딕셔너리(dictionary)의 key로, 답변을 value로 나눌 수 있다.
아래와 같이 두개의 딕셔너리(dictionary)를 하나의 리스트에 담을 수 있다.
두가지 형태로 나누어 구성해보자.
1번과 같이 처음 보는 사람도 질문인지 답변인지 알 수 있도록 작성할 수도 있고, 2번과 같이 처음 보는 사람은 모르지만 간결하게 작성할 수 있는 방법도 있다.
코드
total_dictionary = {}
while True:
question = input("질문을 입력해주세요 : ")
if question == "q":
break
else:
total_dictionary[question] = ""
print(total_dictionary)
total_dictionary = {}
while True:
question = input("질문을 입력해주세요 : ")
if question == "q":
break
else:
total_dictionary[question] = ""
//추가된 내용
for i in total_dictionary:
print(i)
answer = input("답변을 입력해주세요 : ")
total_dictionary[i] = answer
print(total_dictionary)
코드
total_list = []
while True:
question = input("질문을 입력해주세요 : ")
if question == "q":
break
else:
total_list.append({"질문" : question, "답변" : ""})
코드
total_list = []
while True:
question = input("질문을 입력해주세요 : ")
if question == "q":
break
else:
total_list.append({"질문" : question, "답변" : ""})
//추가된 내용
for i in total_list:
print(i["질문"])
answer = input("답변을 입력해주세요 : ")
i["답변"] = answer
print(total_list)
결과
질문을 입력해주세요 : 취미는?
질문을 입력해주세요 : 특기는?
질문을 입력해주세요 : q
취미는?
답변을 입력해주세요 : 노래듣기
특기는?
답변을 입력해주세요 : 노래부르기
[{'질문': '취미는?', '답변': '노래듣기'}, {'질문': '특기는?', '답변': '노래부르기'}]
최종 코드 리뷰
total_list = []
while True: //무한루프
question = input("질문을 입력해주세요 : ")
if question == "q": //q를 입력하면
break //질문 입력 종료
else:
total_list.append({"질문" : question, "답변" : ""})
for i in total_list:
print(i["질문"])
answer = input("답변을 입력해주세요 : ")
i["답변"] = answer
print(total_list)