개발/나도코딩 파이썬 자율학습단 2기

나도코딩 Python 자율학습단 2기 1주차 - 4

배타브 2023. 3. 11. 00:13
728x90
반응형

 

어제 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-- 축하합니다! --")
728x90
반응형