Jun's Blog
간단한 기능 구현해보기(배열) - (2) 본문
1. List 활용해 보기
# coffees = [] # List()를 의미함.
coffees = list()
coffees.append('아메리카노')
coffees.append('콜드브루')
coffees.append('카푸치노')
coffees.append('바닐라라떼')
coffees.append('디카페인커피')
coffees.append('카페라떼')
coffees.append('카푸치노')
# 인덱싱
print('앞에서 2번째 음료 : %s' % (coffees[2]))
print('뒤에서 1번째 음료 : %s' % (coffees[-1]))
# 슬라이싱
print('1번째부터 3번째까지 음료 : %s' % (coffees[1:4]))
print('3번째부터 끝까지 음료 : %s' % (coffees[3:]))
print('처음부터 2번째까지 음료 : %s' % (coffees[:3]))
print('요소 개수 : %d' % (len(coffees)))
<실행결과>
print('짝수 요소만 출력 : %s' % (coffees[0::2]))
print('홀수 요소만 출력 : : %s' % (coffees[1::2]))
<실행결과>
print('오름차순 정렬')
coffees.sort()
print(coffees)
print('내림차순 정렬')
coffees.sort(reverse=True)
print(coffees)
print('무작위로 섞기')
import random
random.shuffle(coffees)
print(coffees)
<실행결과>
2. 튜플(tuple) 활용해보기
# 목록에 소괄호를 사용하거나, 단수 콤마만 연결하면 tuple이 됩니다.
coffee01 = ('아메리카노', '카페라떼')
coffee02 = ('콜드브루', '아이스커피')
coffee03 = '카푸치노', '마키야또'
print('자료형 타입 : ', end='')
print(type(coffee01))
print(type(coffee03))
<실행결과>
mytuple = coffee01 * 3
print(mytuple)
<실행결과>
# 튜플 합치기
# + 기호 사용시 요소 개수가 1개이더라도 반드시 콤마를 붙여야 합니다.
coffees = coffee01 + coffee02 + coffee03 + coffee04 + ('에스프레소',)
length = len(coffees)
print('요소 개수 : %d' % (len(coffees)))
print(coffees)
<실행결과>
# 불변성을 가지는 튜플은 값을 할당할 수 없습니다.
# coffees[1] = '우유'
# tuple과는 다르게 list는 값을 할당 할 수 있습니다.
coffees[6] = '막걸리'
# 인덱싱
print('앞에서 2번째 요소 : %s' % (coffees[2]))
print('뒤에서 1번째 요소 : %s' % (coffees[-1]))
# 슬라이싱
print('1번째부터 3번째까지 요소 : ', end='')
print(coffees[1:4])
print('4번째부터 끝까지 요소 : ', end='')
print(coffees[4:])
<실행결과>
# count() 함수를 사용하여 특정 항목이 몇개 있는지 확인 가능합니다.
myconut = coffees.count('아메리카노')
print(myconut)
myindex = coffees.index('아메리카노')
print('아메리카노의 위치 색인 : %d' % (myindex))
<실행결과>
print('튜플의 응용(swap 기법)')
x, y = 3, 4
print('before x : %d, y : %d' % (x, y))
x, y = y, x
print('after x : %d, y : %d' % (x, y))
<실행결과>
3. 사전(dict) 활용해보기
Java의 map와 유사합니다.
# coffees = {} # dict()을 의미함.
coffees = dict()
print('자료형 타입 : ', end='')
print(type(coffees))
coffees['에스프레소'] = 1000
print(coffees)
<실행결과>
coffees['에스프레소'] = 1000
coffees['에스프레소'] = 1500
print(coffees)
<실행결과>
coffees['에스프레소'] = 1000
coffees['카페라떼'] = 2000
coffees['카푸치노'] = 3000
coffees['마키야또'] = 4000
print(coffees)
<실행결과>
findItem = '카페라떼' # 찾고자 하는 요소
bool = findItem in coffees
if bool :
print(f'"{findItem}" 항목이 있습니다.')
else:
print(f'"{findItem}" 항목이 없습니다.')
<실행결과>
응용 문제 1 : '핫초코'가 있는지 확인하고, 없을 경우 5000원으로 추가해주세요.
bool = findItem in coffees
if not bool :
coffees[findItem] = 5000
#end if
print(coffees)
<실행결과>
응용 문제 2 : 6,000 원짜리 품목이 존재하지 않으면, '아이스 커피'를 등록해 보세요.
findItem = '아이스크림'
price = 6000
bool = price in coffees.values()
if bool:
print(f'가격이 "{price}"인 항목이 존재합니다.')
else :
print('품목이 존재하지 않아서 추가합니다.')
coffees[findItem] = price
#end if
print(coffees)
<실행결과>
응용 문제 3 : 아래의 항목들을 for문을 사용하여 추가해보세요.
바닐라라떼 : 7000원, 라벤더: 8000원, 딸기라떼: 9000원, 콜드브루: 10000원
listCoffee = ['바닐라라떼','라벤더','딸기라떼','콜드브루']
for idx in range(len(listCoffee)):
coffees[listCoffee[idx]] = (idx + 7) * 1000
print(coffees)
<실행결과>
응용 문제 4 : 기존 상품의 가격을 출력해주세요.
findItem = '핫초코'
print('%s의 가격은 %d원입니다.' % (findItem, coffees[findItem]))
<실행결과>
응용 문제 5 : 다음 항목들이 존재하면 출력, 그렇지 않으면 5000원으로 상품 등록하기
['라벤더', '우유 커피']
targetList = ['라벤더', '우유 커피']
for item in targetList:
try:
price = coffees[item]
message = '품명 : %s, 가격 : %d' % (item, price)
print(message)
except KeyError:
print(f'{item} 키가 존재하지 않아서 신규 추가하도록 합니다.')
coffees[item] = 5000
#end for
print(coffees)
<실행결과>
findItem = '둥글레차'
price = coffees.get(findItem, 3000) # findItem이 없을 경우, 기본값으로 3000원을 지정합니다.
message = '품명 : %s, 가격 : %d' % (findItem, price)
print(message)
<실행결과>
findItem = '카푸치노'
popItem = coffees.pop(findItem) # 특정 Item을 사전에서 제거할 때 사용합니다.
#del coffees['카푸치노'] 로 실행해도 동일한 결과로 처리됩니다.
print(f'목록에서 제거된 {findItem}의 이전 가격은 {popItem}이었습니다.')
print(coffees)
<실행결과>
print('\n모든 품목들의 단가 정보 출력')
for (key, value) in coffees.items():
print(f'{key}의 단가는 {value}원입니다.')
<실행결과>
응용 문제 6 : keys() 함수와 [] 기호를 사용하여 전체 목록을 출력하시오.
단, 다음 품목별은 단가를 변경하여 출력하도록 합니다.
500원 인상 : '카페라떼', '카푸치노'
500원 인하 : '핫초코'
for item in coffees.keys():
if item in ('카페라떼', '카푸치노'):
coffees[item] = coffees[item] + 500
elif item in ('핫초코'):
coffees[item] = coffees[item] - 500
else:
pass
#end if
print(f'품명 : {item}, 가격 : {coffees[item]}원')
#end for
<실행결과>
4. 집합(Set) 활용해보기
집합(Set)은 순서가 없으며, 중복을 허용하지 않습니다.
coffees = set()
print('자료형 타입 : ', end='')
print(type(coffees))
coffees.add('아메리카노')
coffees.add(100)
coffees.add(True)
coffees.add('아메리카노')
print(f'요소 개수 : {len(coffees)}')
coffees.clear() # 요소들을 모두 지울때 사용
print(f'요소 개수 : {len(coffees)}')
<실행결과>
coffees.add('아메리카노')
coffees.add('에스프레소')
coffees.add('믹스커피')
coffees.add('카페라떼')
newItems = ['콜드브루','고구마라떼','디카페인커피']
coffees.update(newItems)
print(coffees[2]) # 집합(Set)은 순서가 없으므로 에러 발생함
<실행결과>
findItem = '카푸치노'
bool = findItem in coffees
print(f'{findItem} 존재 여부 : {bool}')
<실행결과>
문제 1 : '마키야또'가 존재하는지 확인하고, 없으면 추가해 보세요.
findItem = '마키야또'
bool = findItem in coffees
if not bool:
coffees.add(findItem)
else:
print(f'{findItem}이 존재합니다.')
#end if
print(coffees)
<실행결과>
#'마키야또' 삭제하기
findItem = '믹스커피'
coffees.remove(findItem)
print(coffees)
<실행결과>
문제 2 : 집합에 존재하지 않는 '바닐라라떼'를 삭제를 시도하고, 예외처리 하세요.
removeItem = '바닐라라떼'
try:
coffees.remove(removeItem)
except KeyError:
print(f'{removeItem}는 존재하지 않아 지울 수 없습니다.')
# end try-except
<실행결과>
print('반복문을 이용한 출력')
for element in coffees:
print(element)
# end for
<실행결과>
print('\n집합 연산')
store01 = set(['고구마라떼','에스프레소','아메리카노','마키야또'])
store02 = set(['아메리카노','마키야또','카페라떼','디카페인커피'])
4.1 합집합
print('2개의 store에서 판매 가능한 품목')
# | 기호도 가능합니다.
union_set = store01.union(store02)
print('합집합 : %s' % (union_set))
<실행결과>
4.2 교집합
print('2개의 store에서 공통적으로 판매 가능한 품목')
# & 기호도 가능합니다.
intersection_set = store01.intersection(store02)
print('교집합 : %s' % (intersection_set))
<실행결과>
4.3 차집합
print('첫번째 store에서만 판매 가능한 품목')
# - 기호도 가능합니다.
difference_set_01 = store01.difference(store02)
print('차집합(A-B) : %s' % (difference_set_01))
print('두번째 store에서만 판매 가능한 품목')
# - 기호도 가능합니다.
difference_set_02 = store02.difference(store01)
print('차집합(B-A) : %s' % (difference_set_02))
<실행결과>
4.3.1 차집합들의 합집합
symmetric_difference_set = store01.symmetric_difference(store02)
print('차집합들의 합집합 : %s' % (symmetric_difference_set))
<실행결과>
'Python' 카테고리의 다른 글
간단한 기능 구현해보기(함수) - (4) (0) | 2025.03.05 |
---|---|
간단한 기능 구현해보기(배열) - (3) (0) | 2025.03.05 |
간단한 기능 구현해보기 - (1) (1) | 2025.03.04 |
기본 패키지 생성해보기 (0) | 2025.03.04 |
Python & PyCharm 설치 (0) | 2025.03.04 |