Today I Learned (TIL)/Python

[TIL] 파이썬 문법 기초 - 1주차 심화

신짜린 2024. 6. 27. 11:31

1. 튜플, 집합

- 튜플(tuple)

  리스트와 비슷하지만 불변인 자료형이다. 순서가 존재.

a = (1,2,3)
print(a[0])
-----------------------------------------------------------------------------------------------
# 아래와 같은 작업은 불가능합니다!
a = (1,2,3)
a[0] = 99
-----------------------------------------------------------------------------------------------
a_dict = [('bob','24'),('john','29'),('smith','30')]

 

- 집합(set)

 중복 제거 가능.

a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]

a_set = set(a)

print(a_set)
-----------------------------------------------------------------------------------------------
# 교집합, 합집합, 차집합 구하기도 가능!
a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']

a_set = set(a)
b_set = set(b)

print(a_set & b_set)  # 교집합
print(a_set | b_set)  # 합집합

 

2. f-string

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}    
]
-----------------------------------------------------------------------------------------------
# 이름과 점수를 모두 출력해보기
for s in scores:
    name = s['name']
    score = str(s['score'])
    print(name,score)
-----------------------------------------------------------------------------------------------
# 아래와 같이 출력해보기
for s in scores:
    name = s['name']
    score = str(s['score'])
    print(name+'는 '+score+'점 입니다')
-----------------------------------------------------------------------------------------------
# f-string을 이용하면 훨씬 간단하게 가능합니다!
for s in scores:
    name = s['name']
    score = str(s['score'])
    print(f'{name}은 {score}점입니다')

 

3. 예외처리

- try-except문

 에러가 있어도 건너뛰게 할 수 있는 방법

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    if person['age'] > 20:
        print (person['name'])
-----------------------------------------------------------------------------------------------
# 만약 bobby가 age를 갖고 있지 않다면?
people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby'},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    if person['age'] > 20:
        print (person['name'])
-----------------------------------------------------------------------------------------------
# 아래과 같은 try except구문을 이용하면 에러를 넘길 수 있습니다.
for person in people:
    try:
        if person['age'] > 20:
            print (person['name'])
    except:
        name = person['name']
        print(f'{name} - 에러입니다')

 

4. 파일 불러오기

# main_test.py
from main_func import *

say_hi()
-----------------------------------------------------------------------------------------------
# main_func.py
def say_hi():
	print('안녕!')

 

5. 한줄의 마법

- if문: 삼항연산자

 (참일 때 값) if (조건) else (거짓일 때 값)으로 항이 3개라 삼항 연산자

# 만약 조건에 따라 다른 값을 변수에 저장하고 싶다면?
num = 3

if num%2 == 0:
    result = "짝수"
else:
    result = "홀수"

print(f"{num}은 {result}입니다.")
-----------------------------------------------------------------------------------------------
# 이것을 한 줄에 적는 것이 파이썬의 유일한 삼항연산자인 조건식입니다.
num = 3

result = "짝수" if num%2 == 0 else "홀수"

print(f"{num}은 {result}입니다.")

 

- for문: 한 번에 써버리기

# a_list의 각 요소에 2를 곱한 새로운 리스트를 만들고 싶다면?
a_list  = [1, 3, 2, 5, 1, 2]

b_list = []
for a in a_list:
    b_list.append(a*2)

print(b_list)
-----------------------------------------------------------------------------------------------
# 한 번에 쓰기!
a_list  = [1, 3, 2, 5, 1, 2]

b_list = [a*2 for a in a_list]

print(b_list)