내일배움캠프 5일차

김서영·2022년 9월 2일
0

내일배움캠프 TIL

목록 보기
6/85
post-custom-banner

1. 파이썬 기초 문법

  • 튜플
    리스트와 비슷하지만 불변한 자료형(튜플안에 있는 것들을 바꿀 수 없음)
    딕셔너리 대신 리스트와 튜플로 딕셔너리 '비슷하게' 만들어 사용해야 할 때 많이 쓰인다.

  • 집합(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 = ['사과','멜론','청포도','토마토','참외']
    print(a & b)  # 교집합
    print(a | b)  # 합집합
    print(a - b)  # 차집합
  • f-sring
    직관적인 문자열을 만들 수 있음
    예시)1번을 2번으로 만들 수 있음!

    1.for s in scores:
        name = s['name']
        score = str(s['score'])
        print(name+'는 '+score+'점 입니다')
    
    2.for s in scores:
        name = s['name']
        score = str(s['score'])
        print(f'{name}은 {score}점입니다')
  • 예외 처리(try-except문)
    에러가 있어도 건너뛰게 할 수 있는 방법
    ❌실제 상황에서는 남용하지 말기!❌
    어떤 오류가 생겼는지 알 수 없기 때문!
    예시) 나이자료가 없을 때

    for person in people:
        try:
            if person['age'] > 20:
                print (person['name'])
        except:
            name = person['name']
            print(f'{name} - 에러입니다')
  • 파일 분리하기
    기존파일에서 사용하던 함수를 새로운 파일에서도 사용하기
    예시)
    <기존파일>

    def say_hi():
    	print('안녕!')

    <새로운 파일>

    from main_func import *
    say_hi()

위의 방법처럼 하면 기존파일의 모든 함수 사용 가능!
원하는 함수만 가져오고 싶은 경우 *뒤에 해당 함수(say_hi)를 쓰면 된다.

  • 삼항연산자(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  = [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)
  • map
    주어진 리스트를 돌면서 리스트 안의 값들을 함수에 넣고 그 결과를 다시 리스트로 만듦
    예시)
    a, b = map(int, input().split())

-> int함수를 뒤에 있는 것들에 각각 다 적용 시켜라(a, b모두에 int를 적용)

def check_adult(person):
    if person['age'] > 20:
        return '성인'
    else:
        return '청소년'
result = map(check_adult, people)
print(list(result))

위 값의 결과는 아래처럼 나온다.

['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
  • lambda(함수식을 깔끔하게)
    위의 map과 같은 코드이다.

    result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
    print(list(result))
  • filter(참인 것들만 뽑기)

    result = filter(lambda x: x['age'] > 20, people)
    print(list(result))
  • 함수의 매개변수

    def cal(a, b):
        return a + 2 * b
    result = cal(1,2)
    print(result)
    결과는 5

여기에서 result에 cal(a=1, b=2) 이런식으로 넣으면 순서를 바꿔도 값이 같게 나온다.

def cal(a, b):
    return a + 2 * b
result = cal(b=2, a=1)
print(result)
결과는 5

함수 부분에서 애초에 값을 고정 할 수도 있다.
그래서 값을 넣지 않아도 넣었다고 생각해 값이 나온다.
이 때 result에 값을 집어 넣으면 넣은 값으로 결과가 나온다.

def cal(a, b=2):
    return a + 2 * b
result = cal(1)
print(result)
결과는 5
def cal(a, b=3):
    return a + 2 * b
result = cal(1, 2)
print(result)
결과는 5
  • 변수 무제한 넣기

    def cal(*args):
        for name in args:
            print(f'{name}야 밥먹어라~')
    cal('철수','영수','희재')-> 여기에 값을 무제한으로 입력 가능
  • 키워드 인수 여러개 받기(인자들을 지정)
    딕셔너리로 그대로 가져다 쓸 수 있게 만들어줌

    def cal(**kwargs):
        print(kwargs)
    cal(name='bob')
    cal(name='john', age='27')
  • 클래스(class)
    물체에 물체에 관련된 속성들을 넣어두고 컨트롤 할 수 있는 함수들을 만들어서 붙여준 후 중앙에서는 함수만 불러다가 물체들을 제어

    class Monster():
        hp = 100
        alive = True
        def damage(self, attack):
            self.hp = self.hp - attack
            if self.hp < 0:
                self.alive = False
        def status_check(self):
            if self.alive:
                print('살아있다')
            else:
                print('죽었다')
    m1 = Monster()
    m1.damage(120)
    m2 = Monster()
    m2.damage(90)
    m1.status_check()
    m2.status_check()

함수에서 hp와 alive 앞에는 self.을 붙여줘야 인식
m1, m2를 인스턴스라고 함(몬스터 한마리로 생각)

💜 오늘 느끼고 배운 점

오늘도 오전에 파이썬 인터넷 강의를 듣고, 오후에는 복습, 저녁에는 백준 알고리즘 문제를 풀었다.
오늘의 파이썬 강의에서는 새로운 내용을 배우게 되어 이해하기 조금 어려웠지만 지속적으로 복습하여 내 것으로 만들어야 겠다.
오늘 백준 알고리즘은 조건문 관련 문제들이었는데 어려 방식의 조건문 활용법을 알게되었고 오늘 스스로 풀지 못한 문제는 며칠뒤에 다시 풀어볼 예정이다.

profile
개발과 지식의 성장을 즐기는 개발자
post-custom-banner

0개의 댓글