본문 바로가기
#개인연구 및 공부#/[python]

(2020.11.03)파이썬 300제 문제풀기 [No.071 - 080] - 튜플

by 착한해커 2020. 11. 3.

파이썬 300제[No.071 - 080] - 튜플

파이썬에서 리스트와 비슷하지만 값을 수정, 삭제, 추가 할 수 없는 객체 집합 또는 자료구조이다.

 

 

 

No.071 튜플 생성하기

문제) my_variable 이름의 비어있는 튜플을 만들라.

 

입력) 튜플은 ()로 감싸주면 지정된다.

my_variable = ()
print(type(my_variable))

 

출력)

<class 'tuple'>

 

 

 

No.072 튜플 지정하기

문제) 2016년 11월 영화 예매 순위 기준 top3는 다음과 같다. 영화 제목을 movie_rank 이름의 튜플에 저장하라. (순위 정보는 저장하지 않는다.)

 

순위영화

1 닥터 스트레인지
2 스플릿
3 럭키

 

입력) 튜플을 만드는 것이므로 각 속성값을 순위별로 문자열로 묶고, 전체를 ()로 묶어 변수에 입력한다.

출력시 리스트와 다르게 ()묶여서 출력이 되고 타입은 튜플로 출력되는 것을 확인 할 수 있다.

movie_rank = ("닥터 스트레인지", "스플릿", "럭키")
print(movie_rank, type(movie_rank), sep="\n")

 

출력)

('닥터 스트레인지', '스플릿', '럭키')
<class 'tuple'>

 

 

 

No.073 튜플 생성하기

문제) 숫자 1 이 저장된 튜플을 생성하라.

 

입력) 튜플은 속성을 하나만 저장할 경우 반드시 ,를 붙여주어야 한다. 즉  a = (1) 로 저장을 하게 되면 일반 int형으로 저장이 되므로 a = (1,) 로 저장을 해주어야 속성 하나를 튜플로 지정할 수 있다.

int_num_1 = (1) # int 타입으로 인식된다.
int_num_2 = (1,) # 튜플 타입으로 인식된다.

print(type(int_num_1))
print(type(int_num_2))

 

출력)

<class 'int'>
<class 'tuple'>

 

 

 

 

No.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

 

 

입력) 튜플은 원소(element)의 값을 변경할 수 없다, 튜플은 합치거나 곱하는 등의 튜플간의 연산만 가능하다

t = (1, 2, 3)
t[0] = 'a'

 

출력)

Traceback (most recent call last):
  File "c:\Users\skyro\OneDrive\바탕 화면\study\practice.py", line 2, in <module>       
    t[0] = 'a'
TypeError: 'tuple' object does not support item assignment

 

 

 

 

No.075 튜플 ()없이 출력

문제) 아래와 같이 t에는 1, 2, 3, 4 데이터가 바인딩되어 있다. t가 바인딩하는 데이터 타입은 무엇인가?

 

입력) 튜플 지정원칙은 ()를 붙여야 한다. 다만 ()없이도 숫자는  튜플이 될 수 있다.

t = 1, 2, 3, 4
print(type(t))

 

출력)

<class 'tuple'>

 

 

 

No.076 튜플 새로만들기

문제) 변수 t에는 아래와 같은 값이 저장되어 있다. 변수 t가 ('A', 'b', 'c') 튜플을 가리키도록 수정 하라.

t = ('a', 'b', 'c')

 

입력) 튜플의 원소는 변경할 수 없기 때문에 변경시도하면 에러가 발생한다. 따라서 새로운 t 변수를 만들고 값을 업데이트 해주어야 한다. 

t1 = ('a', 'b', 'c')
t1[0] = 'A' # 지정하여 출력할 경우 에러가 발생된다.

=======================================================

t1 = ('a', 'b', 'c')
t1 = ('A', 'b', 'c') # t변수를 재지정하고 바꿀 튜플값을 새로 업데이트 해준다.

print(t1)

 

출력)

Traceback (most recent call last):
  File "c:\Users\skyro\OneDrive\바탕 화면\study\practice.py", line 2, in <module>       
    t1[0] = 'A' # 지정하여 출력할 경우 에러가 발생된다.
TypeError: 'tuple' object does not support item assignment

==================================================================================

('A', 'b', 'c')

 

 

 

No.077 튜플을 리스트로 전환하기

문제) 다음 튜플을 리스트로 변환하라.

interest = ('삼성전자', 'LG전자', 'SK Hynix')

 

입력) 튜플로 값을 생성한 interest 변수를 list()로 감싸주면 list로 전환된다.

interest = ('삼성전자', 'LG전자', 'SK Hynix')
list_interest = list(interest)
print(list_interest, type(list_interest), sep="\n")

 

출력)

['삼성전자', 'LG전자', 'SK Hynix']
<class 'list'>

 

 

 

 

No.078 리스트를 튜플로 전환하기

문제) 다음 리스트를 튜플로 변경하라.

interest = ['삼성전자', 'LG전자', 'SK Hynix']

 

입력) 리스트로 입력된 interest 변수를 tuple()로 감싸서 출력하면 tuple로 전환된다.

interest = ['삼성전자', 'LG전자', 'SK Hynix']
tuple_interest = tuple(interest)
print(tuple_interest, type(tuple_interest), sep="\n")

 

출력)

('삼성전자', 'LG전자', 'SK Hynix')
<class 'tuple'>

 

 

 

No.079 튜플 언패킹

문제) 다음 코드의 실행 결과를 예상하라.

temp = ('apple', 'banana', 'cake')

a, b, c = temp

print(a, b, c)

 

입력) 튜플은 패킹과 언패킹이라는 개념이 있다. 패킹은 원소를 튜플로 묶어서 변수에 저장하는 것, 지금까지 튜플을 생성할 때가 패킹이다. 언패킹은 반대이다. 튜플로 묶인 변수를 n개의 변수에 원소 하나씩을 대입하여 풀어주는 것이다.

temp = ('apple', 'banana', 'cake') # 원소를 튜플로 묶는 패킹
a, b, c = temp # 튜플로 패킹된 변수를 언패킹하여 각기 다른 변수가 튜플의 원소를 각각 부여받는다.

print(a, b, c)

 

출력)

apple banana cake # str 타입으로 변환되어 각 원소가 출력되었다.

 

 

 

No.080 range() 함수

문제) 1 부터 99까지의 정수 중 짝수만 저장된 튜플을 생성하라.

출력예시 : (2, 4, 6, 8 ... 98)

 

입력) 튜플은 슬라이싱, 인덱싱, 튜플끼리 연산하기 등은 가능하므로 range 함수를 활용하여 짝수만 출력해야하므로 첫 시작을 2로 시작하고 마지막 범위를 99로 지정하고 2 간격으로 출력인자를 넣어준다.

해당 함수를 tuple()로 묶어주면 튜플로 지정된다. 

int_data = tuple(range(2,99,2)) # 짝수만 저장된 튜플을 출력해야하므로 2부터 99까지 시작하여 2 간격으로 출력한다.
print(int_data)

 

출력)

(2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84, 86, 88, 90, 92, 94, 96, 98)

댓글