Notion에서 정리한 내용을 공유용으로 옮긴 내용입니다.
양식과 구성의 어색함이 있을 수 있습니다.
04/09(수) 학습내용을 바탕으로 업로드하였음
코드라이언 LMS에 따라 실습한 내용입니다.
import random
print(random.choice(["된장찌개", "피자", "제육볶음"]))
import random
# list
menu = ["된장찌개", "피자", "치킨","떡볶이", "라면"]
# 30번 반복
for _ in range(30) :
print(random.choice(menu))
# print("이 문장도 반복되는가?")
import random
import time
menu = ["된장찌개", "피자", "치킨","떡볶이", "라면"]
# 30번 반복
while True:
print(random.choice(menu))
# break # break 위치 학습
print("이 문장도 반복되는가?")
time.sleep(1)
break
import random
lunch = random.choice(["된장찌개", "피자", "제육볶음"])
lunch = "냉장고"
# 변수 덮어씌워짐. lunch 는 그저 문자열 "냉장고"
# 이제 위의 list 불러올 수 없음
dinner = random.choice(["김밥", "쫄면", "돈까스"])
print(lunch)
lunch를 프린트하면 lunch가 나오는 게 아닌 그 안에 있는 “피자”가 나옴

그림출처 : 멋쟁이사자처럼 / CODELION
약이 많다면 이런 식으로 각각 요일로 구분된 약통에 약을 미리 담아 놓고 먹기도 함
- 월요일 : 주황색 알약 한 개
- 화요일 : 초록색 알약 한 개
- 수요일 : 작은 알약 각각 한 개
딕셔너리 만들기
딕셔너리 형태로
Info1 = {"고향" : "수원", "취미" : "영화보기", "좋아하는 음식" : "국수"}
print(Info1)
취미가 무엇인지 알고 싶다면?
print(Info1.get("취미"))
get( )
딕셔너리에서 값을 꺼내되, 에러 없이 None이나 대체값을 줄 수 있는 안전한 메서드
- dict["키"] 는 키가 없으면 오류 발생(KeyError)
info = {"이름": "지민", "나이": 25}
print(info.get("취미")) # 출력: None (취미가 없으니까!)
print(info.get("취미", "없음")) # 출력: 없음 (기본값을 설정했으니까!)
“없음”이 기본값 → 원하는 값이 없을 때 대신 사용하는 값
dict.get(”키”,”기본값”)의 형태로 쓰는 게 좋음
key, value

그림출처 : 멋쟁이사자처럼 / CODELION
자료를 저장하는 방법에는 리스트, 딕셔너리가 가장 중요
DIctionary
info = {"나이": 25}
info["이름"] = "지민"
print(info)
# 출력: {'나이': 25, '이름': '지민'}
수정하는 형식도 마찬가지
딕셔너리에 값 삭제하기
del dict[”키”]
info = {"이름": "지민", "나이": 25}
del info["이름"]
print(info)
# 출력: {'나이': 25}
없는 키 del 하면 KeyError
dict.clear : 딕셔너리 전체를 싹 비움
info = {"이름": "지민", "나이": 25}
info.clear()
print(info)
# 출력: {}
information = {"고향":"수원", "취미":"영화관람","좋아하는 음식":"국수"}
foods = ["된장찌개", "피자", "제육볶음"]
print(information.get("취미"))
# 딕셔너리에 값 추가하기
information["특기"] = "피아노"
information["사는곳"] = "서울"
# 딕셔너리에 값 삭제하기
del information["좋아하는 음식"]
# 딕셔너리에 정보 묶음이 몇 개인지
print(information)
print(len(information)) # 3개 + 2개 추가 - 1개 삭제 = 4
# clear
information.clear()
print(information)
영화관람
{'고향': '수원', '취미': '영화관람', '특기': '피아노', '사는곳': '서울'}
4
{}
List
foods = ["된장찌개", "피자", "제육볶음"]
print(foods[2]) # 출력 : 제육볶음
print(foods[3]) # 에러
print(foods[-2]) # 출력 : 피자

그림출처 : 멋쟁이사자처럼 / CODELION
음수 순서값 : 뒤에서부터 -1, -2, …순으로
리스트에 값 추가 : list.append(”값”)
foods.append("김밥")
print(foods)
# ['된장찌개', '피자', '제육볶음', '김밥']
del foods[-1]
print(foods)
# ['된장찌개', '피자', '제육볶음']
list 뒤 순서 값에는 int, slices만 들어갈 수 있음
for x in range(30):
print(x)
# 0부터 29까지 x 안에 넣어져서 출력
foods = ["된장찌개", "피자", "제육볶음"]
for x in range(3):
print(foods[x])
→ 리스트에 “라면”을 추가하고 싶으면, range값 바꿔 줘야 함
→ 리스트 수정될 때마다 range 변경 필요
→ 개선 필요
for i in foods:
print(i)
된장찌개
피자
제육볶음
→ 이렇게 하면 list 가 몇 개든 알아서 반복
information = {"고향":"수원", "취미":"영화관람", "좋아하는 음식":"국수"}
for x, y in information.items():
print(x)
print(y)
고향
수원
취미
영화관람
좋아하는 음식
국수
→ DIctionary의 요소 개수가 몇 개든 알아서 반복
menu1 = set(["된장찌개", "피자", "제육볶음"])
menu2 = set(["된장찌개", "떡국", "김밥"])
menu3 = menu1 | menu2
print(menu3)
{'떡국', '김밥', '피자', '제육볶음', '된장찌개'}
menu4 = menu1 & menu2
print(menu4)
{'된장찌개'}
menu5 = menu1 - menu2
print(menu5)
{'피자', '제육볶음'}
if 문 사용시 들여쓰기 주의
만약 뽑힌 게 제육볶음이면, “곱빼기 주세요”를 출력하자. → if - print
import random
food = random.choice(["된장찌개","피자","제육볶음"])
if(food == "제육볶음"):
print("곱배기 주세요")
print("종료")
food2 = random.choice(["된장찌개","피자","제육볶음"])
if(food2 == "제육볶음"):
print("곱배기 주세요")
else:
print("그냥 주세요")
print("종료")
추가/삭제 기능을 탑재한 메뉴 리스트를 만들어서 그 중에 하나를 뽑아라.
메뉴 리스트를 input받아서 추가 + 반복
# 메뉴 리스트
lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]
# 음식 추가
while True : # 반복해서 추가
item = input("음식을 추가해 주세요 : ")
lunch.append(item)
print(lunch)
#무한으로 추가됨
# 메뉴 리스트
lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]
# 음식 추가
while True : # 반복해서 추가
print(lunch)
item = input("음식을 추가해 주세요 : ")
if (item == "q"): # q면 중단되고
break
else:
lunch.append(item) # 아니면 계속 반복
print(lunch) # 최종 결과 출력 후 종료
set_lunch = set(["된장찌개", "피자", "제육볶음", "짜장면"])
item = "짜장면"
print(set_lunch - set([item]))
# 차집합을 하기 위해 item 리스트로 만들어서 set으로 묶어줌 : 3개만 출력
print(set_lunch) # 원래의 set_lunch이므로 4개 출력
차집합은 원래의 set_lunch 에 변화를 주지 않음
set_lunch = set(["된장찌개", "피자", "제육볶음", "짜장면"])
item = "짜장면"
set_lunch = set_lunch - set([item])
print(set_lunch) # 3개 출력
set_lunch = set_lunch - set([item]) 부분 추가하면 3개로 출력import random
import time
# 메뉴 리스트
lunch = ["된장찌개", "피자", "제육볶음", "짜장면"]
# 음식 추가
while True : # 반복해서 추가
print(lunch)
item = input("음식을 추가해 주세요 : ")
if (item == "q"): # q면 중단되고
break
else:
lunch.append(item) # 아니면 계속 반복
print(lunch) # 최종 결과 출력 후 종료
set_lunch = set(lunch) # lunch가 집합으로 바뀌어 저장
# food12에서 이어서
# 음식 삭제
while True:
print(set_lunch)
item = input("음식을 삭제해 주세요 : ")
if (item == "q"):
break
else:
set_lunch = set_lunch - set([item]) # 괄호 중요
print(set_lunch, "중에서 선택합니다.")
# print를 ,로 연결하면 한 줄로 쭉 출력할 수 있음
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))) # random은 set에서 쓸 수 없음 -> list로

그림출처 : 멋쟁이사자처럼 / CODELION
이러한 준비물, 레시피, 주의사항 등이 필요
사람이 하면 실수가 있을 수 있음
but 돌체라떼 기계

그림출처 : 멋쟁이사자처럼 / CODELION
익명 게시판에 질문/답변 형식 만들기
구현 idea1)

그림출처 : 멋쟁이사자처럼 / CODELION
→ 딕셔너리로 구현하자!
{”질문” : “취미는 무엇입니까”, “답변” : “영화 보기입니다”}
{”질문” : “특기는 무엇입니까”, “답변” : “댄스입니다”}

→ 리스트로 하나의 딕셔너리씩 나누기
[
{”질문” : “취미는 무엇입니까”, “답변” : “영화 보기입니다”}
{”질문” : “특기는 무엇입니까”, “답변” : “댄스입니다”}
]
위와 같이 리스트 - 딕셔너리 중첩해서 쓰는 경우 많음

그림출처 : 멋쟁이사자처럼 / CODELION
서로 데이터 어떻게 저장하는지 방식 비교하며 보기
# 딕셔너리만 사용
total_dictionary = {}
# 질문 q로 중단할 때까지 차례로 입력받음
while True:
question = input("질문을 입력해주세요 : ")
if question == "q":
break
else:
total_dictionary[question] = ""
# question이 total_dictionary에 들어가고 답변은 ""
# 질문 전부 하나씩 출력하면서 답변 적을 것임
for i in total_dictionary:
print(i)
answer = input("답변을 입력해 주세요 : ")
total_dictionary[i] = answer # answer로 받은 답변 딕셔너리에 넣기
print(total_dictionary)
질문을 입력해주세요 : 취미는?
질문을 입력해주세요 : 특기는?
질문을 입력해주세요 : q
취미는?
답변을 입력해 주세요 : 피아노
특기는?
답변을 입력해 주세요 : 줄넘기
{'취미는?': '피아노', '특기는?': '줄넘기'}

그림출처 : 멋쟁이사자처럼 / CODELION
# 리스트 사용
total_lsit = []
# 질문하는 부분
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
취미는?
답변을 입력해주세요 : 라면 끓이기
특기는?
답변을 입력해주세요 : 라면 먹기
[{'질문': '취미는?', '답변': '라면 끓이기'}, {'질문': '특기는?', '답변': '라면 먹기'}]
실습하는 내용이 굉장히 기초적인 내용이라 쉽기도 하고 해서 재밌게는 한 듯
일단 객체지향 가지고 뭔가 Class와 함수 만들어서 출력하는 것보다 훨씬 이해하기 편함
하지만 시간 체크가 너무 귀찮게 해...분명 정리하면서 천천히 듣고 점심도 한 20분은 켜놨던 거 같은데 어째서 시간이 이렇게 적게 측정됐냔 말임...
내일은 점심 풀로 켜놔야지ㅠㅠㅠㅠ
객체지향 예제를 일부러 정리 안했는데 오늘 이해해서 정리해보려 했더니😵
챗GPT와 떠든 길이가 장난이 아님
이해는 어찌어찌 된 거 같은데 이걸 말로 풀 자신이 없다...