PYTHON/기본 문법

PYTHON - 튜플

seongjin08 2022. 11. 10. 15:46

두 변수의 값은 변경하는 방법

c = 10
d = 20
c, d = d, c                 
print(c, d)
# 20 10

인자 값이 여러게 일 경우 인자 값 앞에 별을 붙이면 그 인자값 안에 모두 들어가게 된다.

def magu_print(x, y, *rest):     
    print(x, y, rest)

magu_print(1, 2, 3, 5, 6, 7, 9, 10)
# 1 2 (3, 5, 6, 7, 9, 10)

튜플 선언

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

# 튜플 원소가 없는 튜플을 만들때 괄호를 꼭 써주기
empty = ()

# 원소를 하나만 가진 튜플을 만들땐 원소뒤에 콤마 꼭 찍기
one = 5,
#  (5,)

 

튜플은 리스트와 달리 원소값을 직접 바꿀수 없어 문자열에서 했던 것 처럼 오려붙이는 방법을 써야한다.

p = (1,2,3)

q = p[:1] + (5,) + p[2:]
# (1, 5, 3)

r = p[:1], 5, p[2:]
# ((1,), 5, (3,))

리스트 변환 , 튜플 변환

p = (1, 2, 3)

q = list(p)                  # 튜플 p로 리스트 q를 만듦
[1, 2, 3]

r = tuple(q)                 # 리스트 q로 튜플 r을 만듦
(1, 2, 3)

 

연습문제 

내일 날짜 구하기 - 사용자로 부터 년 월 일 입력 받아 입력받은 날짜를 mm/dd/yyyy 형식 출력 

월을 두자리 일 을 두자리  년도 네자리 숫자로 나타내며 같은 형식으로 다음날 날짜 출력  단,윤년을 무시 2월을 항상 28일로 가정

def read_date():
    year, month, day = tuple(map(int, input().split()))
    return year, month, day

def print_date(date):
    year, month, day = date
    print("%02d/%02d/%04d" % (month, day, year))

def advance_day(date):
    year, month, day = date
    
    # end_of_month = (month == 1 and day == 31) or \
               # (month == 2 and day == 28) or \
               # (month == 3 and day == 31) or \
               # (month == 4 and day == 30) or \
               # (month == 5 and day == 31) or \
               # (month == 6 and day == 30) or \
               # (month == 7 and day == 31) or \
               # (month == 8 and day == 31) or \
               # (month == 9 and day == 30) or \
               # (month == 10 and day == 31) or \
               # (month == 11 and day == 30) or \
               # (month == 12 and day == 31)
    
    #end_of_month = (month in [1, 3, 5, 7, 8, 10, 12] and day == 31) or \
    #                     (month in [4, 6, 9, 11] and day == 30) or \
    #                     (month == 2 and day == 28)
    
    end_of_month = (month, day) in [(1, 31), (2, 28), (3, 31), (4, 30), (5,
        31), (6, 30), (7, 31), (8, 31), (9, 30), (10, 31), (11, 30), (12, 31)]
    
    end_of_year = month == 12 and day == 31
    
    if end_of_month:
        if end_of_year:
            year += 1
            month = 1
            day = 1
        else:
            month += 1
            day = 1
    else:
        day += 1
    
    return year, month, day
    
if __name__ == "__main__":
    today = read_date()
    print_date(today)
    tomorrow = advance_day(today)
    print_date(tomorrow)

'PYTHON > 기본 문법' 카테고리의 다른 글

PYTHON - 딕셔너리(dict), 세트(set)  (1) 2022.11.10
PYTHON - 문자열 리스트  (0) 2022.11.10
PYTHON - 데이터 타입  (0) 2022.11.08
PYTHON 기본 문법 (함수)  (0) 2022.11.08
PYTHON 기본 문법 ( for , match - case 문 )  (1) 2022.11.08