# 리스트 [] : 순서를 가지는 객체의 집합
# 지하철 칸별로 10명, 20명, 30명
subway1 = 10
subway2 = 20
subway3 = 30
subway = [10, 20, 30]
print(subway)
subway = ["정맥주", "고감자", "박사탕"]
# 고감자는 몇번째 칸에 타고 있는가?
print(subway.index("고감자"))
# 정불닭이 다음 정류장에 다음 칸에 탐.
subway.append("정불닭")
print(subway)
# 서버섯이 정맥주와 고감자 사이에 탐.
subway.insert(1, "서버섯")
print(subway)
# 지하철에 있는 사람을 한 명씩 뒤에서 꺼냄
subway.pop()
print(subway)
subway.pop()
print(subway)
# 같은 이름의 사람이 몇 명 있는지 확인
subway.append("정맥주")
print(subway)
print(subway.count("정맥주"))
# 정렬도 가능
num_list = [5,4,3,2,1]
num_list.sort() # 순서대로 정렬
print(num_list)
num_list.reverse()
print(num_list) # 거꾸로 정렬
num_list.clear()
print(num_list) # 모두 삭제
# 다양한 자료형과 함께 사용
num_list = [5,4,3,2,1]
mix_list = ["고감자", 30, True]
print(mix_list)
# 리스트 확장
num_list.extend(mix_list)
print(num_list)
# 사전 : {key:value}형태. 키에 대한 중복이 허용되지 않음.
cabinet = {3:"고감자", 5:"정맥주"}
print(cabinet[3])
print(cabinet[5])
print(cabinet.get(3))
print(cabinet.get(5))
# .get()와 []의 차이
print(cabinet.get(7)) # None 뜨고 다음 내용 실행됌.
#print(cabinet[7]) # keyError: 7 뜨고 프로그램 종료됌.
print(cabinet.get(7, "사용가능")) # 값이 있으면 값을, 값이 없으면 사용가능이 뜸.
# 자료 확인
print(3 in cabinet) # True
print(7 in cabinet) # False
# key는 문자형도 가능.
cabinet = {"A-3":"고감자", "B-5":"정맥주"}
print(cabinet["A-3"])
print(cabinet["B-5"])
# 새 손님
cabinet["C-7"] = "박사탕"
print(cabinet)
# 손님 대체
cabinet["A-3"] = "정불닭" # 고감자가 정불닭으로 대체됌.
print(cabinet)
# 간 손님 (한 명 삭제)
del cabinet["A-3"]
print(cabinet)
# key들만 출력
print(cabinet.keys())
# value들만 출력
print(cabinet.values())
# key, value 쌍으로 출력
print(cabinet.items())
# 식당 폐점 (모두 삭제)
cabinet.clear()
print(cabinet)
# 튜플 () : 리스트와는 다르게 변경 추가 불가능. 고정된 값에 사용.
menu = ("돈까스", "치즈가스")
print(menu[0])
print(menu[1])
name = "고감자"
age = 30
hobby = "coding"
print(name, age, hobby)
# 튜플에 경우 값을 한 번에 선언 가능.
(name, age, hobby) = ("고감자", 30, "coding")
print(name, age, hobby) # 고감자 30 coding
# 세트(set)(집합) {} : 중복이 아니고 순서가 없음.
my_set = {1,2,3,3,3}
print(my_set) # {1,2,3} : 중복이 안되기때문에.
java = {"고감자", "정불닭", "서버섯"}
python = set(["고감자"]) # 다른set표현방식으로 리스트로 만든 후 set으로 감쌈().
# 교집합
print(java & python)
print(java.intersection(python))
# 합집합
print(java | python)
print(java.union(python))
# 차집합 (java가능 python불가능한 )
print(java - python)
print(java.difference(python))
# python 할 줄 아는 사람 증가
python.add("정불닭")
print(python)
# java 까먹음.
java.remove("정불닭")
print(java)
# 자료구조의 변경
menu = {"커피, 우유, 차"}
print(menu, type(menu)) # 자료 구조가 set. {}
menu = list(menu)
print(menu, type(menu)) # 자료 구조가 list로 바뀜. []
menu = tuple(menu)
print(menu, type(menu)) # 자료 구조가 tuple로 바뀜. ()
menu = set(menu)
print(menu, type(menu)) # 자료 구조가 다시 set으로 바뀜.
# Quiz
# 당신의 학교에서는 파이썬 코딩 대회를 주최합니다.
# 참석률을 높이기 위해 댓글 이벤트를 진행하기로 하였습니다.
# 댓글 작성자 중에 추첨을 통해 1명은 치킨, 3명은 커피 쿠폰을 받게 됩니다.
# 추천 프로그램을 작성하시오.
# 조건1 : 편의상 댓글은 20명이 작성하였고, 아이디는 1~20이라고 가정.
# 조건2 : 댓글 내용과 상관 없이 무작위로 추첨하되 중복 불가.
# 조건3 : random 모듈의 shuffle 과 sample을 활용.
'''(출력예제)
-- 당첨자 발표 --
치킨 당첨자 : 1
커피 당첨자 : [2, 3, 4]
-- 축하축하 함 --'''
'''(활용예제)
from random import *
1st = [1,2,3,4,5]
print(1st) ---> 순서대로
shuffle(1st)
print(1st) ----> 리스트 값이 무작위로 섞임.
print(sample(1st, 1)) ---> 1st리스트중 무작위로 1개를 뽑음.
'''
# mine_sol
from random import *
commender = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]
chicken = sample(commender, 1)
print(type(chicken)) # list
print(chicken)
print(chicken[0])
commender.remove(chicken[0])
print(commender)
shuffle(commender)
print(commender)
coffee = sample(commender, 3)
print(sample(commender, 3))
print("-- 당첨자 발표 -- \n 치킨 당첨자 : " + str(chicken) +
"\n 커피당첨자 : " + str(coffee) +"\n -- 축하축하 함 --")
# other_sol
from random import *
users = range(1,21) # 1부터 20까지의 숫자 생성.
print(type(users)) # range
users = list(users)
print(type(users)) # list
shuffle(users)
print(users)
winners = sample(users, 4) # 개별 중복체크가 아니라 한 번에 4명을 뽑아서 1명은 치킨, 3명은 커피 이렇게 함.
print("-- 당첨자 발표 --")
print("치킨 당첨자 : {0}".format(winners[0]))
print("커피 당첨자 : {0}".format(winners[1:]))
print("-- 축하합니다. --")
# other_sol
from random import *
lst = list(range(1, 21))
shuffle(lst)
print("--당첨자 발표--")
print("치킨 당첨자 :" + str(lst.pop()))
print("커피 당첨자 :" + str(sample(lst, 3)))
print("--축하합니다--")
'_Programming > Python' 카테고리의 다른 글
Basic.함수 (0) | 2020.09.09 |
---|---|
Basic.제어문 (0) | 2020.09.08 |
Basic.문자열처리 (0) | 2020.09.04 |
Basic.연산자 (0) | 2020.09.03 |
Basic. 자료형 (0) | 2020.09.02 |