리스트, 딕셔너리

for x in range(30):
    print(x)

foods = ["된장찌개", "피자", "제육볶음"]
for x in range(3):
    print(foods[x])
for x in foods:
    print(x)

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

30개의 수를 >> x 안에 넣고 >> 30번 반복한다.

 

food를 >> x 안에 넣고 >> 하나씩 반복한다.

 

딕셔너리는 Key와 Value, 총 2개이므로 x,y 라는 2개의 변수에 넣어야 한다.

그리고 .items() 를 추가해 준다.


집합

리스트는 각 리스트마다 순서가 있다.

그러나 집합은 출력을 해도 순서를 보장하지 않는다.

foods = ["된장찌개", "피자", "제육볶음"]
foods_set1 = set(foods)
foods_set2 = set(["된장찌개", "피자", "제육볶음"])
print(foods_set1)
print(foods_set2)

 

menu1 = set(["된장찌개", "피자", "제육볶음"])
menu2 = set(["된장찌개", "떡국", "김밥"])

menu3 = menu1 | menu2 # 합집합
menu4 = menu1 & menu2 # 교집합
menu5 = menu1 - menu3 # 차집합

print(menu3)

if food ==

==은 개발자들도 자주하는 실수이므로 꼭 유의해서 기억하길 바란다.

 

import random

food = random.choice([“된장찌개”,”피자”,”제육볶음])

if(food == “제육볶음”):

  print(“곱배기 주세요”)

print(“종료”)

 

여기서 중요한 점은 들여쓰기이다.

반드시 들여쓰기를 해줘야 어디서부터 어디까지 동작할 것인지 결정하게 된다.

 

만약에 뽑힌게

 

import random

food = random.choice([“된장찌개”,”피자”,”제육볶음])

print(food)
if food == “제육볶음”:
  print(“곱빼기 주세요”)
그렇지 않다면
  print(“그냥 주세요”)
print(“종료”)

 

여기서 그렇지 않다면 파이썬 언어로 바꿔주자

 

그렇지 않다면은

else로 바꿔주면 된다.

 

else:

  print(“그냥 주세요”)

print(“종료”)

 

확인해보면 어떨때는 곱빼기주세요 할 때도 있고 어떨 때는 그냥 주세요 하는 경우가 있다.


Project

오늘은 뭐드실?

lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]
item = input("음식을 추가 해주세요 : ")
lunch.append(item)
print(lunch)

lunch = [“된장찌개”, … ]

item = input(“음식을 추가 해주세요 : “)

lunch.append(item)

print(lunch)

 

입력으로 받은 값을 lunch 라는 변수에 넣어줍시다.

그러면 최종 결과물로 돈까스가 추가된 것을 확인할 수 있습니다.


무한반복으로 입력 받으려면 ?

lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]
while True:
  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 를 누르면 종료된다.

 

lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]

while True:
  print(lunch)
  item = input("음식을 추가 해주세요 : ")
  if(item == "q"):
    break
  else:
    lunch.append(item)
  
print(lunch)
set_lunch = set(lunch)

 

lunch라는 변수가 집합 형태로 set으로 바뀌어서 최종 set_lunch에 저장이 된다.

 

자 그럼 이제 삭제를 해보자.

그렇게 하기 전에 코드를 보지 말고 메뉴를 추가하는 기능, 그리고 집합으로 바꾸는 기능까지 추가해보자

lunch = ...

while:
    print(lunch)
    item = input("음식 추가 :")
    if item == q:
        break
    else:
        lunch.append(item)
 print(lunch)
 set_lunch = set(lunch)

 

메뉴 삭제에 앞서서 차집합과 변수를 한번 집고 넘어가자.

 

지금까지 우리가 작업한 파일을 놔두고 다른 파일을 열어보자.

set_lunch = set(["된장찌개","피자","제육볶음","짜장면"])
item = "짜장면"
set_lunch - item

이 빼기연산인 차집합 연산은 집합과 집합이 연산끼리만 가능하다.

그러나 item은 문자열이기 때문에 item을 집합으로 바꾸어주어야 한다.

 

문자를 집합으로 바꾸려면 먼저 list로 바꾸어 준다.

set_lunch = set(["된장찌개","피자","제육볶음","짜장면"])
item = "짜장면"
set_lunch - set[item]

 

list로 바꾸고 set으로 바꾸면 집합이 된다.

이 결과물을 print로 감싸보자

set_lunch = set(["된장찌개","피자","제육볶음","짜장면"])
item = "짜장면"
print(set_lunch - set[item])

짜장면이 빠진 것을 확인할 수 있다.

 

set_lunch = set(["된장찌개","피자","제육볶음","짜장면"])
item = "짜장면"
print(set_lunch - set[item])
print(set_lunch)

그러나 두번째 print코드의 결과는 짜장면이 빠지지 않았다.

 

우리의 목표는 set_lunch에서 짜장면이 빠지게 하는 것인데 이렇게 하려면

set_lunch = set(["된장찌개","피자","제육볶음","짜장면"])
item = "짜장면"
set_lunch = set_lunch - set[item]
print(set_lunch)

이 코드의 결과물을 다시 set_lunch에 넣어주면 된다.

 


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, "중에서 선택합니다.")

메뉴판에서 음식을 삭제하는 기능을 넣어보자.

추가하는 방식과 매우 유사하다.

set([item]) 에서 주의한다.

 

이제 시간을 세보자.


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

 

러시아인형을 감싸보자.

집합을 리스트로 감싸고 리스트를 랜덤하게 고르는 기능으로 감싸보자.

그리고 그것을 출력하는 프린트로 감싸보자.

 

여기서 time의 기능을 쓰기위해서는 파이썬이 기본적으로 제공하지 않는 라이브러리를 import 해야한다.

import random

import time 을 추가한다.

 


코드 리뷰

이 음식들은 리스트의 형태로 lunch라는 변수에 저장되어 있다.

첫번째 단계는 음식을 추가하는 단계, 두번째 단계는 음식을 삭제하는 단계이다.

사용자의 입력을 input으로 받고 입력이 q이면 중단한다.

q가 아니라면 Lunch에 메뉴를 추가해준다.

추가된 메뉴는 계속 보여준다.

메뉴추가가 완료되면 삭제 단계로 넘어간다.

 

추가는 리스트를 이용하지만 삭제는 set을 이용한다.

집합은 같은 원소도 한개로만 인정해주므로, 또한 차집합 연산을 이용하여 간단히 해결할 수 있으므로 집합을 이용했습니다.

 

lunch라는 리스트를 set으로 묶어서 집합으로 만들어준다.

사용자가 입력한 값인 item을 집합으로 바꾸어 주어야 한다.

item은 문자이기 때문에 먼저 리스트로 바꾸고 그 다음에 집합으로 바꾸어 주어야 한다.

list로 바꾸는 작업은 대괄호[] 로 묶는 것이고 묶어주면 요소의 개수가 한개인 리스트로 바뀌어진다.

만약에 짜장면이라고 입력했다면 짜장면만 요소로 가지는 리스트가 된다.

 

그 다음은 긴장감을 유발해주는 카운트다운 기능이다.

time.sleep(1) 은 1초간 딜레이 해주는 기능이다.

 

set_lunch는 집합이기 때문에

random.choice 기능을 쓸 수 없다.

오직 리스트에서 동작을 하기 때문이다.

그래서 set_lunch를 집합으로 바꾸어주어야 한다.

그래서 list로 감싸주고 random.choice로 한번 뽑고 마지막으로 print로 감싸준다.

 

그러면 최종 코드가 완성된다.

'📌 Python' 카테고리의 다른 글

python - ImportError: attempted relative import with no known parent package  (0) 2021.01.08
Python - decorator  (0) 2021.01.06
python - pytest  (0) 2021.01.06
python - assertion  (0) 2021.01.06
python - 이상형이 뭐에요?  (2) 2020.09.09
복사했습니다!