하루 종일 문제만 푼 것 같다..
파이썬 리스트 51~60
# 051 리스트 생성
# 2016년 11월 영화 예매 순위 기준 top3는 다음과 같습니다.
# 영화 제목을 movie_rank 이름의 리스트에 저장해보세요. (순위 정보는 저장하지 않습니다.)
# 순위 영화
# 1 닥터 스트레인지
# 2 스플릿
# 3 럭키
movie_rank = ['닥터 스트레인지','스플릿','럭키']
print(movie_rank)
# 052 리스트에 원소 추가
# 051의 movie_rank 리스트에 "배트맨"을 추가하라.
movie_rank = ['닥터 스트레인지','스플릿','럭키']
movie_rank.append('배트맨') # append로 리스트 끝에 값을 추가
print(movie_rank) # 맨위에 변수로 지정해줘야 리스트가 출력이 된다.
# 053
# movie_rank 리스트에는 아래와 같이 네 개의 영화 제목이 바인딩되어 있다.
# "슈퍼맨"을 "닥터 스트레인지"와 "스플릿" 사이에 추가하라.
movie_rank = ['닥터 스트레인지', '스플릿', '럭키', '배트맨']
movie_rank.insert(1,'슈퍼맨') # insert로 (n번째, 값)을 넣어준다.
print(movie_rank) # 맨위에 변수로 지정해줘야 리스트가 출력이 된다.
# 054
# movie_rank 리스트에서 '럭키'를 삭제하라.
movie_rank = ['닥터 스트레인지', '슈퍼맨', '스플릿', '럭키', '배트맨']
del movie_rank[3] # del은 "인덱스 기반 삭제"라 리스트를 사용한다
print(movie_rank) # remove()가 "값 기반 삭제" 함수이다.
# 그럼 movie_rank.remove('럭키')도 가능하다.
# 055
# movie_rank 리스트에서 '스플릿' 과 '배트맨'을 삭제하라.
movie_rank = ['닥터 스트레인지', '슈퍼맨', '스플릿', '배트맨']
del movie_rank[-2:] # [2:]도 가능하다
print(movie_rank)
# 056
# lang1과 lang2 리스트가 있을 때
# lang1과 lang2의 원소를 모두 갖고 있는 langs 리스트를 만들어라.
lang1 = ["C", "C++", "JAVA"]
lang2 = ["Python", "Go", "C#"]
# 실행 예:
# langs
# ['C', 'C++', 'JAVA', 'Python', 'Go', 'C#']
lang1 = ["C", "C++", "JAVA"]
lang2 = ["Python", "Go", "C#"]
langs = lang1 + lang2 #lang에 's'를 넣어 복수라고 변수 지정
print(langs)
# 057
# 다음 리스트에서 최댓값과 최솟값을 출력하라. (힌트: min(), max() 함수 사용)
nums = [1, 2, 3, 4, 5, 6, 7]
# 실행 예:
# max: 7
# min: 1
max_num = (max(nums)) # 굳이 변수로 지정 안 해도 괜찮다.
min_num = (min(nums)) # 구별하기 쉽도록 일단은 변수로 지정
print("MAX: ",max_num)
print("MIN: ",min_num)
# 058
# 다음 리스트의 합을 출력하라.
nums = [1, 2, 3, 4, 5]
# 실행 예:
# 15
print(sum(nums)) # 리스트 안에 요소들을 합하는 sum 함수 사용
# 059
# 다음 리스트에 저장된 데이터의 개수를 화면에 구하하라.
cook = ["피자", "김밥", "만두", "양념치킨", "족발", "피자", "김치만두", "쫄면", "소시지", "라면", "팥빙수", "김치전"]
print(len(cook)) #리스트 안에 몇 개의 요소가 있는지 len 함수 사용
# 060
# 다음 리스트의 평균을 출력하라.
nums = [1, 2, 3, 4, 5]
# 실행 예:
# 3.0
# sum 함수와 len 함수를 써서
print(sum(nums) / len(nums)) # 요소들의 합 ÷ 요소의 갯 수를 출력
파이썬 리스트 61~70
# 061
# price 변수에는 날짜와 종가 정보가 저장돼 있다.
# 날짜 정보를 제외하고 가격 정보만을 출력하라. (힌트 : 슬라이싱)
price = ['20180728', 100, 130, 140, 150, 160, 170]
# 출력 예시:
# [100, 130, 140, 150, 160, 170]
print(price[1:]) # 0번째 제외, 1번째부터 끝까지
# 062
# 슬라이싱을 사용해서 홀수만 출력하라.
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 실행 예:
# [1, 3, 5, 7, 9]
print(nums[::2]) # 0번째 (숫자 1)부터 끝까지 +2씩 건너 뜀
# 063
# 슬라이싱을 사용해서 짝수만 출력하라.
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 실행 예:
# [2, 4, 6, 8, 10]
print(nums[1::2]) #1번째(숫자 2)부터 끝까지 +2씩 건너 뜀
# 064
# 슬라이싱을 사용해서 리스트의 숫자를 역 방향으로 출력하라.
nums = [1, 2, 3, 4, 5]
# 실행 예:
# [5, 4, 3, 2, 1]
print(nums[::-1]) # 뒤에서부터 -1씩
# 065
# interest 리스트에는 아래의 데이터가 바인딩되어 있다.
interest = ['삼성전자', 'LG전자', 'Naver']
# interest 리스트를 사용하여 아래와 같이 화면에 출력하라.
# 출력 예시:
# 삼성전자 Naver
print(interest[2]) # 리스트에서 2번째 값을 출력했다.
# 066 join 메서드
# interest 리스트에는 아래의 데이터가 바인딩되어 있다.
interest = ['삼성전자', 'LG전자', 'Naver', 'SK하이닉스', '미래에셋대우']
# interest 리스트를 사용하여 아래와 같이 화면에 출력하라.
# 출력 예시:
# 삼성전자 LG전자 Naver SK하이닉스 미래에셋대우
result =" ".join(interest) # join으로 문자열 사이에 문자(" ")를 삽입했다.
print(result) # 변수로 지정한 result로 출력
# 067 join 메서드
# interest 리스트에는 아래의 데이터가 바인딩되어 있다.
interest = ['삼성전자', 'LG전자', 'Naver', 'SK하이닉스', '미래에셋대우']
# interest 리스트를 사용하여 아래와 같이 화면에 출력하라.
# 출력 예시:
# 삼성전자/LG전자/Naver/SK하이닉스/미래에셋대우
result = "/".join(interest) # join으로 문자열 사이에 문자("/")를 삽입했다.
print(result) # 변수로 지정한 result로 출력
# 068 join 메서드
# interest 리스트에는 아래의 데이터가 바인딩되어 있다.
interest = ['삼성전자', 'LG전자', 'Naver', 'SK하이닉스', '미래에셋대우']
# join() 메서드를 사용해서 interest 리스트를 아래와 같이 화면에 출력하라.
# 출력 예시:
# 삼성전자
# LG전자
# Naver
# SK하이닉스
# 미래에셋대우
# join으로 문자열 사이에 문자 ("\n")줄바꿈을 삽입했다.
result = "\n".join(interest)
print(result) # 변수로 지정한 result로 출력
# 069 문자열 split 메서드
# 회사 이름이 슬래시 ('/')로 구분되어 하나의 문자열로 저장되어 있다.
string = "삼성전자/LG전자/Naver"
# 이를 interest 이름의 리스트로 분리 저장하라.
# 실행 예시
# >> print(interest)
# ['삼성전자', 'LG전자', 'Naver']
interest = string.split("/")
print(interest)
# 070 리스트 정렬
# 리스트에 있는 값을 오름차순으로 정렬하세요.
data = [2, 4, 3, 1, 5, 10, 9]
data.sort() # sort를 사용하면 오름차 순으로 정렬해준다.
print(data) # sorted를 사용하면 원래 값도 같이 출력
파이썬 튜플 71~80
# 071
# my_variable 이름의 비어있는 튜플을 만들라.
my_variable= () # 빈 튜플을 변수에 지정해줌
print(type(my_variable)) # type을 쓰면 데이터 타입 확인 가능.
# 072
# 2016년 11월 영화 예매 순위 기준 top3는 다음과 같다.
# 영화 제목을 movie_rank 이름의 튜플에 저장하라. (순위 정보는 저장하지 않는다.)
# 순위 영화
# 1 닥터 스트레인지
# 2 스플릿
# 3 럭키
movie_rank = ('닥터스트레인지','스플릿','럭키') # 위에 영화들을 튜플로 묶음
print(movie_rank) # ('닥터스트레인지', '스플릿', '럭키')로 출력됨.
# 073
# 숫자 1 이 저장된 튜플을 생성하라.
num = (1) # 오답 : 튜플에 1만 넣어서 확인해 보면 int로 뜬다
num = (1,) # 하나의 데이터가 저장되는 경우 ,(콤마)는 필수!
print(type(num)) # 정답은 num = (1,)이다
# 074
# 다음 코드를 실행해보고 오류가 발생하는 원인을 설명하라.
t = (1, 2, 3)
t[0] = 'a'
# Traceback (most recent call last):
# File "<pyshell#46>", line 1, in <module>
# t[0] = 'a'
# TypeError: 'tuple' object does not support item assignment
print("튜플은 원소의 값을 변경할 수 없다.")
# 075
# 아래와 같이 t에는 1, 2, 3, 4 데이터가 바인딩되어 있다.
# t가 바인딩하는 데이터 타입은 무엇인가?
t = 1, 2, 3, 4 # ,(콤마)가 붙으면 튜플로 인식된다.
print(type(t)) # <class 'tuple'>
# 076
# 변수 t에는 아래와 같은 값이 저장되어 있다.
# 변수 t가 ('A', 'b', 'c') 튜플을 가리키도록 수정하라.
t = ('a', 'b', 'c')
t = ('A', 'b', 'c') # 대문자 A의 새로운 튜플로 덮어씌워진다.
print(t) # ('A', 'b', 'c')
# 077
# 다음 튜플을 리스트로 변환하라.
interest = ('삼성전자', 'LG전자', 'SK Hynix')
result = list(interest) # 튜플로 묶고 list를 써서 변환해준다.
print(result) # ['삼성전자', 'LG전자', 'SK Hynix']
# 078
# 다음 리스트를 튜플로 변경하라.
interest = ['삼성전자', 'LG전자', 'SK Hynix']
result = tuple(interest) # ()튜플로 묶고 tuple을 써서 변환해준다.
print(result) # ('삼성전자', 'LG전자', 'SK Hynix')
# 079 튜플 언팩킹
# 다음 코드의 실행 결과를 예상하라.
temp = ('apple', 'banana', 'cake') # 각 요소들이 튜플로 묶여 있지만
a, b, c = temp # ,(콤마)를 써서 각 요소를 변수로 바인딩 해준다.
print(a, b, c) # 이걸 튜플의 언팩킹이라 한다.
# 080 range 함수
# 1 부터 99까지의 정수 중 짝수만 저장된 튜플을 생성하라.
# 예시: (2, 4, 6, 8 ... 98)
num= range(2, 99, 2) # range(시작,끝,간격)함수를 써서 변수를 지정
print(tuple(num)) # 튜플을 쓰지 않으면 range(2, 99, 2)로 출력됨
파이썬 딕셔너리 81~90
# 081 별 표현식
# 기본적으로 데이터 언패킹은 좌변의 변수와 우변 데이터 개수가 같아야 합니다.
# 하지만 *(start expression)을 사용하면 변수의 개수가 달라도 데이터 언패킹을 할 수 있습니다.
# 예시▼
# >> a, b, *c = (0, 1, 2, 3, 4, 5)
# >> a 는 0번 째 요소 언패킹
# >> b 는 1번 째 요소 언패킹
# >> 별이 붙은 변수는 언패킹할 요소를 쭉 바인딩 시킨다 [2, 3, 4, 5]
a, b, *c = (0, 1, 2, 3, 4, 5)
print(*c) # 출력값 2, 3, 4, 5
# 다음과 같이 10개의 값이 저장된 scores 리스트가 있을 때, *(start expression)을 사용하여
# 좌측 8개의 값을 valid_score 변수에 바인딩하여라.
scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
*valid_score,b ,c = scores # b와 c는 끝에 2 요소가 각각 언패킹 되었다.
print(valid_score) # valid_score는 그 앞에 전부 언패킹 되어 바인딩 된 변수다.
# 082
# 다음과 같이 10개의 값이 저장된 scores 리스트가 있을 때, *(start expression)을 사용하여
# 우측 8개의 값을 valid_score 변수에 바인딩하여라.
scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
# 083
# 다음과 같이 10개의 값이 저장된 scores 리스트가 있을 때, *(start expression)을 사용하여
# 가운데 있는 8개의 값을 valid_score 변수에 바인딩하여라.
scores = [8.8, 8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8, 9.4]
a, *valid_score, c= scores # 양 끝에 8.8 과 9.4는 각각, a와 c로 언패킹 되었다.
print(valid_score) # [8.9, 8.7, 9.2, 9.3, 9.7, 9.9, 9.5, 7.8]
# 084 비어있는 딕셔너리
# temp 이름의 비어있는 딕셔너리를 만들라.
temp = {}
print(type(temp)) # <class 'dict'>
# 085
# 다음 아이스크림 이름과 희망 가격을 딕셔너리로 구성하라.
# 이름 희망 가격
# 메로나 1000
# 폴라포 1200
# 빵빠레 1800
ice = {'메로나' : 1000,'폴라포' : 1200,'빵빠레' : 1800}
print(ice) # {Key : Value} 키와 벨류 값으로 이루어져있다.
# 086
# 085 번의 딕셔너리에 아래 아이스크림 가격정보를 추가하라.
# 이름 희망 가격
# 죠스바 1200
# 월드콘 1500
ice = {'메로나' : 1000,'폴라포' : 1200,'빵빠레' : 1800}
ice['죠스바'] = 1200 # 리스트를 추가해준다 생각하고
ice['월드콘'] = 1500 # ['Key'] = Value값을 리스트 에 넣는다.
print(ice) # 반드시 ':'이 아니라 '='을 써야한다.
# 087
# 다음 딕셔너리를 사용하여 메로나 가격을 출력하라.
ice = {'메로나': 1000,
'폴로포': 1200,
'빵빠레': 1800,
'죠스바': 1200,
'월드콘': 1500}
# 실행 예:
# 메로나 가격: 1000
print('메로나 가격 :', ice['메로나']) # ice[0]는 안 됨.
#딕셔너리는 순서가 없다! 키를 통해서만 인덱싱할 수 있다.
# 088
# 다음 딕셔너리에서 메로나의 가격을 1300으로 수정하라.
ice = {'메로나': 1000,
'폴로포': 1200,
'빵빠레': 1800,
'죠스바': 1200,
'월드콘': 1500}
ice['메로나'] = 1300 # 추가와 동일하게 덮어 씌운다.
print(ice)
# 089
# 다음 딕셔너리에서 메로나를 삭제하라.
ice = {'메로나': 1000,
'폴로포': 1200,
'빵빠레': 1800,
'죠스바': 1200,
'월드콘': 1500}
del ice['메로나'] # del은 "인덱스 기반 삭제"이다.
print(ice)
# 090
# 다음 코드에서 에러가 발생한 원인을 설명하라.
# >> icecream = {'폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000}
# >> icecream['누가바']
# Traceback (most recent call last):
# File "<pyshell#69>", line 1, in <module>
# icecream['누가바']
# KeyError: '누가바'
print("icecream 딕셔너리 안에 '누가바'라는 키 값이 없다.")
파이썬 딕셔너리 91~100
# 091 딕셔너리 생성
# 아래의 표에서, 아이스크림 이름을 키값으로, (가격, 재고) 리스트를 딕셔너리의 값으로 저장하라.
# 딕셔너리의 이름은 inventory로 한다.
# 이름 가격 재고
# 메로나 300 20
# 비비빅 400 3
# 죠스바 250 100
inventory= {'메로나' : [300,20], #리스트로 다시 묶어 가격과 재고를 나눈다.
'비비빅' :[400,3],
'죠스바': [250,100]}
print(inventory)
# 092 딕셔너리 인덱싱
# inventory 딕셔너리에서 메로나의 가격을 화면에 출력하라.
inventory = {
"메로나": [300, 20],
"비비빅": [400, 3],
"죠스바": [250, 100]
}
# 실행 예시:
# 300 원
print(inventory['메로나'][0],"원")
#첫번째[키]두번째[벨류]값인데, 만약[0:]처럼 콜론을 붙이면 갯 수도 출력
# 093 딕셔너리 인덱싱
# inventory 딕셔너리에서 메로나의 재고를 화면에 출력하라.
inventory = {
"메로나": [300, 20],
"비비빅": [400, 3],
"죠스바": [250, 100]
}
# 실행 예시:
# 20 개
print(inventory['메로나'][1],"개")
#첫번째[키]두번째[벨류]값, [1] 1번째 값을 출력
# 094 딕셔너리 추가
# inventory 딕셔너리에 아래 데이터를 추가하라.
inventory = {
"메로나": [300, 20],
"비비빅": [400, 3],
"죠스바": [250, 100]
}
# 이름 가격 재고
# 월드콘 500 7
# 실행 예시:
# >> print(inventory)
# {'메로나': [300, 20], '비비빅': [400, 3], '죠스바': [250, 100], '월드콘': [500, 7]}
inventory['월드콘']= [500,7] #[가격,갯수]벨류 값을 월드콘 키 값에 넣어 추가한다.
print(inventory)
# 095 딕셔너리 keys() 메서드
# 다음의 딕셔너리로부터 key 값으로만 구성된 리스트를 생성하라.
icecream = {
'탱크보이': 1200,
'폴라포': 1200,
'빵빠레': 1800,
'월드콘': 1500,
'메로나': 1000
}
# .keys 함수로 키 값만 가져온다
price = list(icecream.keys()) # list로 묶어준다.
print(price)
# 096 딕셔너리 values() 메서드
# 다음의 딕셔너리에서 values 값으로만 구성된 리스트를 생성하라.
icecream = {
'탱크보이': 1200,
'폴라포': 1200,
'빵빠레': 1800,
'월드콘': 1500,
'메로나': 1000
}
price= list(icecream.values()) # 위와 동일한 방법
print(price)
# 097 딕셔너리 values() 메서드
# icecream 딕셔너리에서 아이스크림 판매 금액의 총합을 출력하라.
icecream = {
'탱크보이': 1200,
'폴라포': 1200,
'빵빠레': 1800,
'월드콘': 1500,
'메로나': 1000
}
# 출력 예시:
# 6700
sum_price= sum(icecream.values()) # sum()으로 벨류 값들의 합을 변수에 지정
print(sum_price) # 변수 지정 없이 바로 프린트에 출력해도 무관.
# 098 딕셔너리 update 메서드
# 아래의 new_product 딕셔너리를 다음 icecream 딕셔너리에 추가하라.
icecream = {
'탱크보이': 1200,
'폴라포': 1200,
'빵빠레': 1800,
'월드콘': 1500,
'메로나': 1000
}
new_product = {
'팥빙수': 2700,
'아맛나': 1000
}
# 실행 예시:
# >> print(icecream)
# {'탱크보이': 1200, '폴라포': 1200, '빵빠레': 1800, '월드콘': 1500, '메로나': 1000, '팥빙수': 2700, '아맛나': 1000}
icecream.update(new_product)
print(icecream)
# 099 zip과 dict
# 아래 두 개의 튜플을 하나의 딕셔너리로 변환하라. keys를 키로, vals를 값으로 result 이름의 딕셔너리로 저장한다.
keys = ("apple", "pear", "peach")
vals = (300, 250, 400)
# 실행 예시:
# >> print(result)
# {'apple': 300, 'pear': 250, 'peach': 400}
# zip 함수는 두개의 쌍을 묶어줌
result = dict(zip(keys,vals)) # zip 함수를 출력하려면 타입 변경을 해야함.
print(result) # {'apple': 300, 'pear': 250, 'peach': 400}
# 100 zip과 dict
# date와 close_price 두 개의 리스트를 close_table 이름의 딕셔너리로 생성하라.
date = ['09/05', '09/06', '09/07', '09/08', '09/09']
close_price = [10500, 10300, 10100, 10800, 11000]
# 실행 예시:
# >> print(close_table)
# {'09/05': 10500, '09/06': 10300, '09/07': 10100, '09/08': 10800, '09/09': 11000}
close_table = dict(zip(date,close_price)) #위와 동일한 방법이다.
print(close_table)
del에 주석을 달다가 '인덱스 기반'과'값을 기반'으로 두는 건 무슨 차이인지 튜터님께 여쭤봤다.
값을 기반으로 하는 remove는 동일한 값이 있다면 제일 첫번째 값을 없애고
인덱스 기반으로 하는 del은 동일한 값이 있더라도 저장된 값 자체를 없애는 거라 다르다.
오늘도 깔끔하게 정리하는 건 포기했다..
자정까지 30분 남았네
'📖TIL(Today I Learned)' 카테고리의 다른 글
TIL 23일 차) 🔥 초보자를 위한 파이썬 101~130문제 (2) | 2024.12.13 |
---|---|
TIL 22일 차) 베이직반 - 1 - (1) | 2024.12.12 |
TIL 20일 차)🔥 초보자를 위한 파이썬 21~50문제 (4) | 2024.12.10 |
TIL 19일 차) 매개변수와 인수, 쉽게 구분하고 이해하기 (2) | 2024.12.09 |
WIL 2주 차) 뭘 쓸지 몰라 일단 써보고.. (7) | 2024.12.06 |