[TIL] Python기초 및 점심메뉴고르기,질문과답변 Project

Yiju Kim·2022년 2월 22일
0

1. What is Python?

Python은 데이터를 다루기 위한 최적의 언어이다. 일단 Python은 언어가 쉬워 배우기 편리하며 오픈소스 활용폭이 넓고 커뮤니티가 많아 코딩을 하다 막혔을 때, 해결할 수 있는데 시간이 그리 많이 걸리지 않는다.

🔴 첫번째 프로젝트 : 오늘 뭐 드실?.py
🔴 두번째 프로젝트 : 질문 & 답변.py

🔴 1. 오늘 뭐 드실?.py

:사용자가 원하는 메뉴를 입력하여 추가 및 삭제할 수 있고 컴퓨터는 입력받은 사용자 값들 중 무작위로 한 가지를 출력해주는 기능이다.

1-1. 메뉴판 리스트 생성 및 사용자의 입력값 받기

menu = []
item = input("추가하고 싶은 음식을 입력해주세요: ")

menu라는 빈 list 자료를 하나 만들어준다.

input을 사용하면 사용자가 입력할 수 있는 화면이 뜬다. 안내문을 적어주어 사용자의 입력값을 받고 그 값을 변수 item에 할당한다.

1-2. 사용자가 그만하라고 할 때까지 질문 받는 반복문 사용하기

while True:
	print(menu)
	item = input("추가하고 싶은 음식을 입력해주세요: ")
    if item == "q":
    	break
    else:
    	menu.append(item)
		print(menu)
        
set_menu = set(menu)

우선 빈 메뉴판을 출력하여 사용자에게 보여준다.
while True: 아래의 코드를 무한히 반복해주세요~

⭕️ 조건문 if

조건문은 등호,부등호를 사용하면 조건에 만족할 때만 아래 코드를 실행해주세요~라고 명령하기 위해 사용한다.

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 자료를 집합으로 바꿔준다.

✏️ 응? 갑자기 웬 set(menu)??

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(["피자", "제육볶음"])

⭕️ list 자료형

1. 리스트 자료 출력하기

foods = [“치킨”, ”찌개”, “피자”]

print(foods[0]) - > "치킨"
print(foods[2]) - > "피자"

print(foods[3]) #Error

print(foods[-1]) - > "피자"

❗️리스트 자료에는 순서가 있다.

리스트 자료를 출력시 list[]안에 숫자(순서)를 입력하여 자료를 출력할 수 있다. 좌측부터 시작할 때는 0부터 시작이고 우측부터 시작할 때는 -1부터 시작한다.

2. 리스트 자료 정보 추가하기

foods = [“치킨”, ”찌개”, “피자”]

foods.append("김밥")

print(foods)
#[“치킨”, ”찌개”, “피자”,"김밥"]

append()함수를 이용하여 자료를 추가 할 수 있다.

3. 정보 삭제 하기

foods = [“치킨”, ”찌개”, “피자”]

del foods[1]

del foods("치킨") # Error

print(foods)
#[“치킨”, “피자”]

del 을 이용하여 원하는 곳의 정보를 삭제할 수 있다.

4. list 반복문 사용

list = [1,2,3,4,5]
for x in list:
	print(x)
    
# result
1
2
3
4
5

반복문에 리스트를 넣어주면 리스트 요소를 하나씩 출력할 수 있다.

1-3. 다음 반복문으로 음식을 삭제해주는 기능 개발

while True:
	print(set_menu)
    item = input("삭제하고 싶은 음식을 입력해주세요: ")
	if item == "q":
    	break
    else:
    	set_menu = set_menu - set([item])

이번에는 집합이 된 set_menu를 보여주고 여기서 삭제하고 싶은 음식의 입력값을 받는다.
위와 같이 "q"를 입력하면 break가 while 반복문을 중단시키고 그렇지 않으면 집합에서 사용자가 입력한 값과 같은 자료를 차집합 기능을 사용하여 삭제한다.

1-4. 사용자의 입력값이 종료되면 랜덤으로 메뉴 출력

print(set_menu, " 중에서 메뉴를 선택해드립니다.")

for x in range(5):
	print(5-x)
    time.sleep(1)
    
print(random.choice(list(set_menu)))

✏️ print의 숨은기능!

print(set_menu, " 중에서 메뉴를 선택해드립니다.")

위와같이 출력하면

# (set(["치킨","피자"]),'  중에서 메뉴를 선택해드립니다.')

메뉴판에서 랜덤으로 하나를 골라주는 기능은 random.choice() 함수를 사용하였다.

📍 random.choice() 짚고 넘어가기!

random.choice()함수 안에는 집합은 들어갈 수 없어서 list로 집합을 감싸줘야지만 작동한다.

✏️ python의 특별한 기능

python은 기본적으로 제공하는 기능 이외에 특별한 기능을 사용하고 싶다면 import로 그 기능을 불러와야지만 가능하다.
우리는 random 기능과 1초 쉬어주세요 기능 time 기능을 사용하기 위해 제일 상단에 import로 함수를 불러와줘야한다.

import random
import time

⭕️ for 반복문

우리는 사용자 입력을 마친 후 결과를 입력받기 전에 긴장감을 주기 위해 시간초를 주어 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("결과출력해주세요!")

위와 같이 사람이 반복하는 일을 없도록 해야한다.

DRY Don't Repeat Yourself!

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
"짜잔~!"

Result

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)))

이번 프로젝트에 들어가기에 앞서 함수에 대해 짚고 넘어가자

✏️ 함수 알아보기

함수란, 매우 긴 코드를 한 단어로 축약하기 위해 사용하는 것이다.

1. 함수 선언

def make_dolcelatte():
	print(1. 얼음을 넣는다.)
	print(2. 연유를 30ml 넣는다.)
	print(3. 찬 우유를 넣는다.)
	print(4. 에스프레소 샷을 넣는다.)

2. 마법의 모자 함수

def func(int):
	print(int + 3)
    
func(3)
# 6

마술사의 모자에 카드를 집어 넣으면 비둘기가 나오는 광경을 본 적이 있나? 함수도 그런 마술사의 모자처럼 사용할 수 있다.
위에 func()안에 숫자를 넣었더니 3을 더한 결과값이 출력된다.

3. 사람은 죽으면 이름을 남기고 함수는 죽으면 뭔가를 남긴다.

def func1() :
    return 10

func1()
# 

❗️응? 왜 출력이 아무것도 안되죠? 착한사람 눈에만 보이나요?

위 코드는 "10을 남겨주세요~" 라고만 명령을 내렸기 때문이다.
출력을 하고 싶다면 print를 사용하라.

🔴 2. 질문 & 답변.py

⭕️ dictionary 자료형

dictionary 자료형은 두가지로 분류할 수 있다.

# 리스트 속 딕셔너리
1[
	{“질문” : “취미는 무엇입니까”, “답변” : “영화보기”}
	{“질문” : “특기는 무엇입니까”, “답변” : “댄스”}
]

# 딕셔너리
2{“취미는 무엇입니까” : “영화보기”},
{“특기는 무엇입니까” : “댄스”}

위의 딕셔너리 자료를 한눈에 보았을 때, 코드를 안 짜본 사람도 이해하기 쉬운 자료는 리스트 속 딕셔너리이다.

딕셔너리는 "자료의 이름" : "자료" 의 형태를 띄고 있다.
이 때, "자료의 이름"을 key, "자료"를 value라고 한다.

여기서 key값은 자료가 아닌 자료의 이름임을 알아두자.

1. 원하는 자료만 얻기

dictionary.get("key")

2. 자료 추가하기

dictionary["key"] = "value"

3. 자료 삭제하기

del dictionary["key"]

4. 자료안의 갯수 세기

len(dictionary))

5. 자료 모두 비우기

dictionary.clear()

6. 반복문 사용하기

information = {"고향":"수원", "취미":"영화관람", "좋아하는 음식":"국수"
}
for x, y in information.items():
	print(x)
	print(y)
    
# result
고향
수원
취미
영화관람
좋아하는 음식
국수

2-1. 리스트로 데이터 관리

2-1-1. 빈 리스트를 만들고 사용자의 입력값을 받는다.

qusetion_list = []

while True:
	question = input("질문을 입력하세요: ")
    if question == "q":
    	break
    else:
    question_list.append({"질문": question, "답변" : ""})

빈 리스트를 만들고 사용자가 입력한 값을 "질문"이라는 자료의 값으로 넣어준다.

2-1-2. 사용자에게 답변을 받기

for i in question_list:
	print(i["질문"])
    answer = input("답변을 입력해주세요: ")
    i["답변"] = answer

print(question_list)

반복문에서 딕셔너리의 첫번째 질문이 출력되고 사용자의 입력값을 받아 answer에 할당한 후 첫번째 답변으로 answer을 할당한다.

2-2. 딕셔너리로 데이터 관리

2-2-1. 사용자의 질문 입력값 받기

total_dictionary = {}

while True:
	question = input(“질문을 입력해주세요 :)
	if question == “q”:
		break
	else:
		total_dictionary[question] = “”

이렇게 하면 입력한 값이 질문(key)에 추가된다.
아직 답변이 없으니 답변은 ""빈칸으로 채워둔다.

2-2-2. 사용자의 답변 입력값 받기

다음으로 질문에 대한 답변을 추가하는 작업을 해보자.

for i in total_dictionary:
	print(i)
	answer = input(“답변을 입력해주세요 :)
	total_dictionary[i] = answer
print(total_dictionary)

질문을 출력해주고 그에 대한 사용자의 답변을 answer에 할당한 후 그 값을 해당 질문에 대한 답변으로 할당해준다.
결과묵을 출력해준다.

result

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를 이용하여 하는데 한글 오류, 알 수 없는 오류들이 많이 생겨서 헤메었다.
그래도 딕셔너리와 리스트에 대한 개념을 확실히 짚고 넘어갈 수 있어 좋았고 사용자의 입력값을 받아 컴퓨터가 출력물을 내어준다는 점 때문에 파이썬에 대한 흥미가 생길 것 같다.

profile
제로베이스 스쿨 커넥to 프론트엔드 1기

0개의 댓글