나도코딩 Python 자율학습단 2기 1주차 - 4
어제 4.6 실습문제 하나 남겨놓고 잠들었네요.
일단 만들긴 했고 결과값은 나오는데 제대로 만든건진 모르겠어요
아직 솔루션은 보지 못했습니다 ㅠ

본 자율학습 내용은 네이버카페 코딩 자율학습단에도 동일한 내용이 업로드 됨을 알려드립니다.
5장 자료구조
-리스트 : 리스트명=[값1,값2,값3...... ] 인덱스 위치니 0부터 시작
특정 요소 인덱스 위치 출력 : print(리스트명.index() )
인덱스 위치로 특정요소 출력 : print(리스트명[인덱스] )
리스트 추가 : append(추가할 값) -> 리스트의 가장 마지막에 추가
insert(인덱스,삽입할 값) -> 익덱스 위치에 값을 넣음
리스트 삭제 : 리스트명.pop() -> 리스트 가장 마지막부터 삭제
리스트명.clear() -> 리스트 전체를 삭제
리스트 정렬하기 : sort() , sorted() - > 기본적으로 오름차순 , 내림차순은 sort(reverse=True) 로 표현
다시 뒤집으려면 sort(reverse)
sort() 같은 리스트 내의 값을 변경 < > sorted() 정렬된 새로운 리스트를 만듦
리스트에는 각종 자료형을 섞어서 넣을수 있다.
리스트 합치기: 리스트1.extend(리스트2) < 리스트1 뒤에 리스트2를 확장
- 딕셔너리 : key와 value 가 한쌍 / 딕셔너리명 = {key: value , key2:value2.......}
key는 문자열로도 사용 가능하다.
print(딕셔너리명[key]) -> value 값 출력 / print(딕셔너리명.get(key) ) -> value 값 출력
대괄호 출력문은 잘못된 key 가 들어가면 오류->종료 / get() 사용시 잘못된 키값 들어가면 다시 시도가능
get(key, default=None) 값이 없으면 None 으로 나옴 ( 사용자 문자열로 변경 가능 )
print(key in 딕셔너리명) -> 해당 키에 value 가 있는지 검사 ( True or False)
print(딕셔너리명.keys() ) -> value 가 있는 key를 출력해줌
값 추가 및 변경: 딕셔너리명[key] = value (key에 값이 없으면 추가 , 값이 있으면 변경)
- 튜플 : 리스트와 유사하지만 값의 수정 , 추가 , 삭제드이 불가능 , 순서 못바꿈 / 리스트보다 속도가 빠름
튜플명 = ( 값1 , 값2 .... ) 으로 표현
똑같이 인덱스로 값을 확인 할 수 있다.
- 세트 : 집합을 표시 / 세트명 = {값1 , 값2 ......} // set()으로도 정의 가능 set( [값1,값2........] )
값에 중복값을 허용하지 않음 (중복값 있을시 한개만 저장)
add() 함수로 값 추가 가능 -> 세트명. add(값)
remove() 함수로 값 제거 가능 -> 세트명.remove(값)
집합이므로
세트명1 & 세트명2 <두개 세트의 교집합 ( 세트명1. intersection(세트명2) 로 표현가능 )
세트명1 | 세트명2 <두개 세트의 합집합 ( 세트명1.union(세트명2) 로 표현 가능 )
세트명1 - 세트명2 <두개 세트의 차집합 (세트명1.difference(세트명2) 로 표현 가능 )
세트는 출력 순서를 보장하지 않는다.
자료구조들 간 type 변환이 가능하다.
- 예) 세트명 = list(세트명) - 세트를 리스트로 변환 ,
튜플명 = set(튜플명) - 튜플을 세트로 변환
리스트명 = set(리스트명) -리스트를 세트로 변환
5.6 실습문제
당첨자에서 치킨을 제외시킬 방법을 한참 고민해서 풀었는데
솔루션은 4명을 뽑고 인덱스 0부터 차례대로 순서 매기는거 였네요 ㅠ


#5.6 실습문제 : 당첨자 뽑기
#당첨자 총 4명 / 1명은 치킨 쿠폰 , 3명은 커피쿠폰
from random import *
#1. 아이디 1~20
user = range(1,21)
#리스트로 변환
user = list(user)
print(f"{user}\n 무작위로 섞습니다") # 유저 1~20 확인 성공
#2. 무작위로 추첨하되 중복은 허용하지 않는다.
#3. random module 의 shuffle() , sample() 활용
shuffle(user)
print(f"{user}\n섞었습니다.")
chicken = sample(user,1)
print(f"-- 당첨자 발표 -- \n치킨 당첨자 : {chicken}")
chicken = set(chicken)
user = set(user)
# 두리스트를 세트로 변환해 User 에서 Chicken 제외
user = list(user-chicken)
coffee = sample(user,3)
print(f"커피 당첨자 : {coffee} \n-- 축하합니다! --")