ACHO.pk devlog

[멋쟁이사자처럼10기] Python 리스트 딕셔너리 심화 본문

멋쟁이사자처럼

[멋쟁이사자처럼10기] Python 리스트 딕셔너리 심화

Acho 2022. 4. 10. 20:21

코드라이언 - 메뉴 자판기

import random
import time     #time.sleep 사용하기 위해 모듈 불러옴

drink = ["아메리카노", "녹차라떼", "오렌지주스", "바닐라라떼"]  #리스트 만들기

while True:     #무한 반복
    print(drink)
    item = input("음료를 추가 해주세요 : ")     #input 함수로 리스트에 추가할 음료 적기
    if(item == "q"):        #q 입력할 경우 무한 반복문 탈출
        break
    else:
        drink.append(item)      #append로 리스트에 추가하기
print(drink)

set_drink = set(drink)      #리스트를 집합으로
while True:
    print(set_drink)
    item = input("음식을 삭제해주세요 : ")
    if(item == "q"):
        break
    else:
        set_drink = set_drink - set([item])     #원래 리스트에서 원하는 항목 삭제하기

print(set_drink, "중에서 선택합니다.")
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_drink)))       #랜덤으로 해당 리스트에서 선택하기

 

코드라이언 - 익명 게시판

#방법 1_질문과 답변이 무엇인지 알 수 있음
total_list = []     #아무것도 없는 리스트 생성

while True:
    question = input("질문을 입력해주세요 : ")
    if question == "q":
        break
    else:
        total_list.append({"질문" : question, "답변" : ""})
        #하나의 딕션너리를 만든 후 리스트에 추가하는 방식임

for i in total_list:
    print(i["질문"])    #딕션너리에서 질문을 key로 하여 접근
    answer = input("답변을 입력해주세요 : ")
    i["답변"] = answer
print(total_list)

#방법 2_질문과 답변을 생략함
total_dictionary = {}       #아무것도 없는 딕션너리 생성

while True:
    question = input("질문을 입력해주세요 : ")
    if question == "q":
        break
    else:
        total_dictionary[question] = ""  #key로 질문이 들어감

for i in total_dictionary:
    print(i)        #질문 하나하나가 i에 저장되고, 이를 출력함
    answer = input("답변을 입력해주세요 : ")
    total_dictionary[i] = answer        #key 값에 해당하는 value
print(total_dictionary)

 


서울여대 멋사 스터디 - 장바구니 메뉴 추가, 삭제, 영수증 출력 

<초기 설정>

1. 현재 주문 시각 출력하는 함수 import

2. 디저트, 음료 메뉴판 각각 딕셔너리 생성

3. 장바구니에 담은 메뉴 총합계를 계산하는 변수 추가

4. 주문한 디저트와 음료를 담을 장바구니 리스트 각각 추가

 

<장바구니에 메뉴 추가하는 기능>

1. 디저트와 음료 각각 메뉴판 출력

2. 디저트와 음료를 각각 따로 장바구니에 담아야 함

3. 'q'를 누르면 최종 장바구니에 담긴 디저트 리스트와 음료 리스트를 각각 한 줄씩 출력하고 추가를 중단함

4. 디저트와 음료를 각각 장바구니에 추가하면 '추가한 메뉴'가 장바구니에 담겼다는 메시지를 출력

 

<장바구니에서 메뉴 삭제하는 기능>

1. 디저트와 음료 set 각각 생성

2. 'q'를 누르면 최종 장바구니에 담긴 내역이 출력되고 삭제를 중단(디저트와 음료가 각각 출력됨)

3. 삭제하고 싶은 메뉴명을 입력하면 삭제를 반영한 현재 장바구니 현황을 출력함(디저트와 음료가 각각 출력됨)

 

<주문 영수증을 출력하는 기능>

1. 주문 시각 출력

2. 주문 내역 출력(단, 디저트와 음료 메뉴 합쳐서 하나의 set으로 출략)

3. 주문한 메뉴의 총 금액 출력

import datetime
now = datetime.datetime.now()
nowDate = now.strftime('%H:%M:%S') 
sum_D = 0
sum_B = 0


dessert = {"치즈 케이크":7000, "초코 케이크":7000, "블루베리 케이크":8000, "녹차 케이크":7500, "딸기 케이크":8000 }
beverage = {"아이스 아메리카노":3000, "복숭아 아이스티":4000, "청포도 에이드":4500, "오레오 초코":5000, "요거트 스무디":5500 }
print("디저트 류 => ", dessert)
print("음료 => ", beverage)

menu_D = []
menu_B = []

while True:
    choose_D = input("장바구니에 담고 싶은 디저트 1개를 선택해주세요 : ")
    if choose_D == "q":
        print("장바구니에 담긴 디저트를 알려드립니다.\n", menu_D)
        print("장바구니에 담긴 음료를 알려드립니다.\n", menu_B, "\n\n")
        break
    else:
        menu_D.append(choose_D)
        print(menu_D, "메뉴가 장바구니에 담겼습니다.")
        
    
    choose_B= input("장바구니에 담고 싶은 음료 1개를 선택해주세요 : ")
    if choose_B == "q":
        print("장바구니에 담긴 디저트를 알려드립니다.\n", menu_D)
        print("장바구니에 담긴 음료를 알려드립니다.\n", menu_B, "\n\n")
        break
    else:
        menu_B.append(choose_B)
        print(menu_B, "메뉴가 장바구니에 담겼습니다.")
    

set_D = set(menu_D)     
set_B = set(menu_B)

while True:
    item = input("장바구니에서 삭제하고 싶은 메뉴 1개를 입력해주세요 : ")
    
    if(item == "q"):
        print("최종 장바구니에 담긴 내역을 알려드립니다\n", "디저트: ", set_D, "음료: ", set_B)
        break
    else:
        set_D = set_D - set([item])
        set_B = set_B - set([item])
        print("===현재 장바구니 현황입니다.===", set_D, set_B, "\n\n")  


print("==============영수증을 출력해드리겠습니다===============")
print("주문 시각: ", nowDate)
print("주문 내역: ", set_D | set_B)

for i in list(set_D):
    sum_D += dessert[i]
    
for j in list(set_B):
    sum_B += beverage[j]

sum=sum_D + sum_B
print("주문하신 메뉴의 총 금액은", sum, "원입니다.")

 

 

 

 

서울여대 멋사 스터디 - 당신은 집순이인가요?

<이름으로 입력 받기>

 

<질문, 답변을 dictionary 자료형으로 생성(답변은 공란으로 둬야함)>

 

<함수 정의, 함수 사용하기>

[함수1] 질문의 개수를 입력 받고 해당 질문 개수만큼 질문을 출력하고 답변을 받아 dictionary에 넣어준다. 네라고 답변한 개수의 퍼센트를 계산하여 반환(return)한다.

-함수명 qna()

-피라미터: 이름 name

-조건: for문을 사용하여 질문을 출력하고 대답을 입력 받는다.(if 문으로 '네' 답변의 개수를 파악한다.

[함수2] 퍼센트에 따라 집순이인지 판단한다.(75, 50, 25, 0 단위로 나누어 판단)

-함수명 your_type()

-피라미터: 퍼센트 percent

-조건: if-elif-else문을 사용한다.

 

** 응용: 함수1 qna()에서 질문이 랜덤으로, 중복되지 않게 나오도록 구현 **

 

from random import *

name = input("\n당신의 이름은?: ")
print("\n===== 안녕하세요, %s님 당신은 집순이일까요? =====" %name)
print("===== 모든 질문의 대답을 네 또는 아니오로 답변해주세요 =====")
num = int(input(" 받을 질문의 개수를 입력해주세요(최대 7개 가능): "))

qna = {"집 밖에 나가는 것 자체가 스케줄인가요?":"","불금에는 북적대는 곳보단 집인가요?":""
     ,"휴대폰만 있어도 심심하지 않은가요?":"", "카톡, 문자 알림을 잘 확인하지 않나요?":""
     ,"'아무 생각이 없다. 왜냐하면 아무생각이 없기 때문이다'라고 자주 느끼나요?":""
     ,"당신은 배달앱 VIP인가요?":""
     ,"친구와의 약속이 갑작스레 파토났을 때 아쉽다는 생각보다 '오예!'라는 생각이 더 자주 드나요?":""}

Q = sample(list(qna), num)  #중복 제외
ans = {}
for i in range(0, num):
    print("{0}".format(Q[i]), end=" ")
    answer = input(": ")
    ans[i] = answer

list_ans = list(ans.values())
list_num = len(list_ans)
list_yes = 0
for i in range(0, list_num):
    if(len(list_ans[i]) == 1):
        list_yes += 1

percent = ( list_yes / list_num ) * 100
if(percent >= 75):
    print("\n당신은 집순이입니다")
elif(percent >= 50):
    print("\n당신은 집을 더 좋아하네요")
elif(percent >= 25):
    print("\n당신은 밖을 더 좋아하네요")
else:
    print("\n당신은 바깥순이입니다")

 

Comments