Python은 데이터를 다루기 위한 최적의 언어이다. 일단 Python은 언어가 쉬워 배우기 편리하며 오픈소스 활용폭이 넓고 커뮤니티가 많아 코딩을 하다 막혔을 때, 해결할 수 있는데 시간이 그리 많이 걸리지 않는다.
🔴 첫번째 프로젝트 : 오늘 뭐 드실?.py
🔴 두번째 프로젝트 : 질문 & 답변.py
:사용자가 원하는 메뉴를 입력하여 추가 및 삭제할 수 있고 컴퓨터는 입력받은 사용자 값들 중 무작위로 한 가지를 출력해주는 기능이다.
menu = []
item = input("추가하고 싶은 음식을 입력해주세요: ")
menu라는 빈 list 자료를 하나 만들어준다.
input을 사용하면 사용자가 입력할 수 있는 화면이 뜬다. 안내문을 적어주어 사용자의 입력값을 받고 그 값을 변수 item에 할당한다.
while True:
print(menu)
item = input("추가하고 싶은 음식을 입력해주세요: ")
if item == "q":
break
else:
menu.append(item)
print(menu)
set_menu = set(menu)
우선 빈 메뉴판을 출력하여 사용자에게 보여준다.
while True: 아래의 코드를 무한히 반복해주세요~
조건문은 등호,부등호를 사용하면 조건에 만족할 때만 아래 코드를 실행해주세요~라고 명령하기 위해 사용한다.
a = 3
if a > 2:
print("a는 2보다 큰 값입니다")
else:
print("a는 2보다 크지 않습니다")
위와 같이 a=3인 경우 if문을 실행해주고 그렇지 않은 경우 else문을 실행해준다.
car = ["benz","520d",5000]
if "520d" in car:
print("there is ~ ")
else:
print("nothing")
kitchen = {"ikea":"500","samsung":"300"}
# key 값을 넣어 확인
if "ikea" in kitchen:
print("there is ~ ")
else:
print("nothing")
딕셔너리나 리스트 안에 요소가 있는지를 조건문을 사용하여 확인이 가능하다.
❗️반복문으로 실행하고 싶은 코드는 꼭 들여쓰기 해준다.
사용자가 "q"를 입력하면 break가 작동하여 while 반복문이 중지된다.
사용자가 음식메뉴를 입력하면 그 값이 menu list 자료에 추가된다. 추가된 메뉴를 사용자가 확인할 수 있게 print로 출력해준다.
set(menu)를 해주어 list 자료를 집합으로 바꿔준다.
list 자료는 순서가 있다고 하였다. 즉 0번째 "치킨"과 4번째로 추가된 "치킨"은 다르다고 생각하기 때문에 이느 우리가 원하는 바와 맞지 않기 때문에 중복되는 자료를 알아서 처리해주는 집합을 사용한다. 집합은 list와 달리 순서가 없다.
1️⃣ 합집합
menu1 = set(["된장찌개", "피자", "제육볶음"])
menu2 = set(["된장찌개", "떡국", "김밥"])
menu3 = menu1 | menu2
# | 역슬래시랑 같은 키에있는 파이프라인 키
print(menu3)
#set(["된장찌개", "피자", "제육볶음","떡국", "김밥"])
2️⃣ 교집합
menu1 = set(["된장찌개", "피자", "제육볶음"])
menu2 = set(["된장찌개", "떡국", "김밥"])
menu3 = menu1 & menu2
print(menu3)
#set(["된장찌개"])
3️⃣ 차집합
menu1 = set(["된장찌개", "피자", "제육볶음"])
menu2 = set(["된장찌개", "떡국", "김밥"])
menu3 = menu1 - menu2
print(menu3)
#set(["피자", "제육볶음"])
foods = [“치킨”, ”찌개”, “피자”]
print(foods[0]) - > "치킨"
print(foods[2]) - > "피자"
print(foods[3]) #Error
print(foods[-1]) - > "피자"
리스트 자료를 출력시 list[]안에 숫자(순서)를 입력하여 자료를 출력할 수 있다. 좌측부터 시작할 때는 0부터 시작이고 우측부터 시작할 때는 -1부터 시작한다.
foods = [“치킨”, ”찌개”, “피자”]
foods.append("김밥")
print(foods)
#[“치킨”, ”찌개”, “피자”,"김밥"]
append()함수를 이용하여 자료를 추가 할 수 있다.
foods = [“치킨”, ”찌개”, “피자”]
del foods[1]
del foods("치킨") # Error
print(foods)
#[“치킨”, “피자”]
del 을 이용하여 원하는 곳의 정보를 삭제할 수 있다.
list = [1,2,3,4,5]
for x in list:
print(x)
# result
1
2
3
4
5
반복문에 리스트를 넣어주면 리스트 요소를 하나씩 출력할 수 있다.
while True:
print(set_menu)
item = input("삭제하고 싶은 음식을 입력해주세요: ")
if item == "q":
break
else:
set_menu = set_menu - set([item])
이번에는 집합이 된 set_menu를 보여주고 여기서 삭제하고 싶은 음식의 입력값을 받는다.
위와 같이 "q"를 입력하면 break가 while 반복문을 중단시키고 그렇지 않으면 집합에서 사용자가 입력한 값과 같은 자료를 차집합 기능을 사용하여 삭제한다.
print(set_menu, " 중에서 메뉴를 선택해드립니다.")
for x in range(5):
print(5-x)
time.sleep(1)
print(random.choice(list(set_menu)))
print(set_menu, " 중에서 메뉴를 선택해드립니다.")
위와같이 출력하면
# (set(["치킨","피자"]),' 중에서 메뉴를 선택해드립니다.')
메뉴판에서 랜덤으로 하나를 골라주는 기능은 random.choice() 함수를 사용하였다.
random.choice()함수 안에는 집합은 들어갈 수 없어서 list로 집합을 감싸줘야지만 작동한다.
python은 기본적으로 제공하는 기능 이외에 특별한 기능을 사용하고 싶다면 import로 그 기능을 불러와야지만 가능하다.
우리는 random 기능과 1초 쉬어주세요 기능 time 기능을 사용하기 위해 제일 상단에 import로 함수를 불러와줘야한다.
import random
import time
우리는 사용자 입력을 마친 후 결과를 입력받기 전에 긴장감을 주기 위해 시간초를 주어 5,4,3,2,1 출력!하려고 한다.
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("결과출력해주세요!")
위와 같이 사람이 반복하는 일을 없도록 해야한다.
for x in range(5):
print(5-x)
time.sleep(1)
print("결과를 출력해주세요!")
위 반복문은 x=0에서부터 x=5가 되기 전까지 실행해주세요~ 라는 말이다.
그 때, for 구문 아래의 코드를 5에서 x를 뺀 값을 출력해주시고 1초 쉬어주세요. 결과물은 다음과 같다.
5
4
3
2
1
"짜잔~!"
import random
import time
menu = []
# 1. 사용자의 입력값을 받아 음식을 추가하자.
while True:
print(menu)
item = input("추가할 음식을 입력하세요: ")
if (item == "q"):
break
else:
lunch.append(item)
set_menu = set(menu)
# 2. 사용자의 입력값을 받아 음식을 삭제하자.
while True:
print(set_menu)
item = input("삭제할 음식을 입력하세요: ")
if (item == "q"):
break
else:
set_menu = set_menu - set([item])
# 3. 사용자의 입력값이 모두 끝났으니 5초후에 랜덤으로 메뉴를 선택해주자.
print(set_menu,"중에서 메뉴를 선택해드립니다.")
for x in range(5):
print(5-x)
time.sleep(1)
print(random.choice(list(set_menu)))
이번 프로젝트에 들어가기에 앞서 함수에 대해 짚고 넘어가자
함수란, 매우 긴 코드를 한 단어로 축약하기 위해 사용하는 것이다.
def make_dolcelatte():
print(“1. 얼음을 넣는다.”)
print(“2. 연유를 30ml 넣는다.”)
print(“3. 찬 우유를 넣는다.”)
print(“4. 에스프레소 샷을 넣는다.”)
def func(int):
print(int + 3)
func(3)
# 6
마술사의 모자에 카드를 집어 넣으면 비둘기가 나오는 광경을 본 적이 있나? 함수도 그런 마술사의 모자처럼 사용할 수 있다.
위에 func()안에 숫자를 넣었더니 3을 더한 결과값이 출력된다.
def func1() :
return 10
func1()
#
❗️응? 왜 출력이 아무것도 안되죠? 착한사람 눈에만 보이나요?
위 코드는 "10을 남겨주세요~" 라고만 명령을 내렸기 때문이다.
출력을 하고 싶다면 print를 사용하라.
dictionary 자료형은 두가지로 분류할 수 있다.
# 리스트 속 딕셔너리
1번
[
{“질문” : “취미는 무엇입니까”, “답변” : “영화보기”}
{“질문” : “특기는 무엇입니까”, “답변” : “댄스”}
]
# 딕셔너리
2번
{“취미는 무엇입니까” : “영화보기”},
{“특기는 무엇입니까” : “댄스”}
위의 딕셔너리 자료를 한눈에 보았을 때, 코드를 안 짜본 사람도 이해하기 쉬운 자료는 리스트 속 딕셔너리이다.
딕셔너리는 "자료의 이름" : "자료" 의 형태를 띄고 있다.
이 때, "자료의 이름"을 key, "자료"를 value라고 한다.
여기서 key값은 자료가 아닌 자료의 이름임을 알아두자.
dictionary.get("key")
dictionary["key"] = "value"
del dictionary["key"]
len(dictionary))
dictionary.clear()
information = {"고향":"수원", "취미":"영화관람", "좋아하는 음식":"국수"
}
for x, y in information.items():
print(x)
print(y)
# result
고향
수원
취미
영화관람
좋아하는 음식
국수
qusetion_list = []
while True:
question = input("질문을 입력하세요: ")
if question == "q":
break
else:
question_list.append({"질문": question, "답변" : ""})
빈 리스트를 만들고 사용자가 입력한 값을 "질문"이라는 자료의 값으로 넣어준다.
for i in question_list:
print(i["질문"])
answer = input("답변을 입력해주세요: ")
i["답변"] = answer
print(question_list)
반복문에서 딕셔너리의 첫번째 질문이 출력되고 사용자의 입력값을 받아 answer에 할당한 후 첫번째 답변으로 answer을 할당한다.
total_dictionary = {}
while True:
question = input(“질문을 입력해주세요 : “)
if question == “q”:
break
else:
total_dictionary[question] = “”
이렇게 하면 입력한 값이 질문(key)에 추가된다.
아직 답변이 없으니 답변은 ""빈칸으로 채워둔다.
다음으로 질문에 대한 답변을 추가하는 작업을 해보자.
for i in total_dictionary:
print(i)
answer = input(“답변을 입력해주세요 : “)
total_dictionary[i] = answer
print(total_dictionary)
질문을 출력해주고 그에 대한 사용자의 답변을 answer에 할당한 후 그 값을 해당 질문에 대한 답변으로 할당해준다.
결과묵을 출력해준다.
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)
python 이라는 HTML/CSS와는 다른 느낌의 컴퓨터 언어를 새로 배웠는데 검은 화면에서 글자만 보이니 약간 지루하였다. 또 멋사의 비디팅을 사용하지 않고 vscode를 이용하여 하는데 한글 오류, 알 수 없는 오류들이 많이 생겨서 헤메었다.
그래도 딕셔너리와 리스트에 대한 개념을 확실히 짚고 넘어갈 수 있어 좋았고 사용자의 입력값을 받아 컴퓨터가 출력물을 내어준다는 점 때문에 파이썬에 대한 흥미가 생길 것 같다.