[ TIL 05/25 ] 파이썬 기초 문법 2

JoonQpa·2022년 5월 25일
0

TIL

목록 보기
9/27
post-thumbnail



  • f-string
  • 예외처리 try
  • map, lambda, filter
  • (*args)
  • (**kwargs)
  • class


  • 주민번호 남여 구분하기
  • int(), split()[], text[:1]
def check_gender(pin):
    if int(pin.split('-')[1][:1]) % 2 == 0:
        print('여자입니다')
    else:
        print('남자입니다')

check_gender('12345-102345')


  • tuple
  • 중복 제거하기 : set()
  • 교집합 : '&'
#튜플은 불변형

a = ('사과', '배')

a[0] = '배'
#에러

set() 
# 중복을 세거해준다

# 교집합 구하기
a = ['사과','감','배','수박','딸기']
b = ['배','사과','포도','참외','수박']

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

print(a_set & b_set)



f-string

  • 문자열 안에 'f{....}'
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 = s['score']
    
print(f'{name}의 점수는 {str(score)}점입니다.')
# '영수의 점수는 70점입니다.'
# '영희의 점수는 65점입니다.' 
...



예외처리 try

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}
]

# try로 중간에 에러가 나면 '에러입니다'를 출력하고 for문을 계속 진행함.
for person in people:
    try:
        if person['age'] > 20:
            print(person['name'])
    except:
    	print('에러입니다.')
#'bob','carry','john','smith','ben','에러입니다.','red','queen'



map, lambda, filter

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}
]


def check_adult(person):
    if person['age'] > 20:
        return person['name'], '성인'
    else:
        return person['name'], '청소년'

# people의 요소 하나하나를 check_adult()안에 넣어라.
result = map(check_adult, people)

# people의 요소 하나하나(x)를 check_adult(x)를 하겠다.
result = map(lambda x: check_adult(x), people)

print(list(result))
#[('bob', '청소년'), ('carry', '성인'), ('john', '청소년'), ('smith', '청소년'), ('ben', '성인'), ('bobby', '성인'), ('red', '성인'), ('queen', '성인')]


# people안에 있는 person(모든 요소)의 age가 20이상이 '참'이면 뽑아라
result = filter(lambda person: person['age'] > 20, people)

print(list(result))
#[{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25}]



(*args)

  • 입력값의 개수를 지정하지 않고 모두 받음
def call_names(*args):
    for name in args:
        print(f'{name}야 밥먹어라~')

call_names('철수','영수','희재')
# '철수야 밥먹어라~', '영수야 밥먹어라~' ...



(**kwargs)

  • 입력값을 딕셔터리로 만들어줌
def get_kwargs(**kwargs):
    print(kwargs)

get_kwargs(name='john', age='27')
# {'name': 'john', 'age': '27'}

get_kwargs(name='john', age='27', height=190)
#{'name': 'john', 'age': '27', 'height': 190}



class

  • 객 체 지 향
class Monster():
    hp = 100
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack # self를 써야 내 hp를 함수안에서 가르킬수있다.
        if self.hp < 0:
            self.alive = False
    
    def status_check(self):
        if self.alive:
            print('살았다')
        else:
            print('죽었다!')

m1 = Monster()
m1.damage(150)
m1.status_check()
# 쥬금

m2 = Monster()
m2.damage(90)
m2.status_check()
# 살았다

머신러닝 팀프로젝트가 무사히 잘 끝났다. KPT회고 포스팅은 다음으로..

profile
Intuition factory: from noob to pro

1개의 댓글

comment-user-thumbnail
2022년 5월 27일

TIL 하루에 한개씩 꼭 쓰시는 모습이 보기좋네요 ! ^^

답글 달기