내일배움캠프 5일차

김서영·2022년 9월 2일
0

내일배움캠프 TIL

목록 보기
6/85

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
개발과 지식의 성장을 즐기는 개발자

0개의 댓글