πŸ‘¦ 내일배움캠프/TIL(Today I Learned)

TIL_220425

  • -

본격적으둜 파이썬 μˆ˜μ—…μ„ μ‹œμž‘ν–ˆλ‹€.

 

재미 반, κΈ΄μž₯ 반, 두렀움 2μŠ€ν‘Ό..

 

'잘 ν•  수 μžˆμ„κΉŒ..' ν•˜λ©΄μ„œλ„

 

'잘 ν• κΊΌμ•Ό' λΌλŠ” λ¦¬λ§ˆμΈλ“œλ‘œ

 

μ˜€λŠ˜λ„ 첫 μˆ˜μ—…μ„ μ‹œμž‘ν•œλ‹€.

 

 


 

무엇을 λŠκΌˆλŠ”κ°€.

 

개인 ν”„λ‘œμ νŠΈμ— μ•žμ„œ 파이썬의 κΈ°μ΄ˆκ°€ λ˜λŠ” κ΅μœ‘μ„ λ“€μ—ˆλ‹€.

μ—¬λŸ¬λ²ˆ λ“€μ—ˆλ˜ λ‚΄μš©μ΄μ§€λ§Œ, 정말 맀번 λ³Ό λ•Œλ§ˆλ‹€ μƒˆλ‘­κ³  κ·Έλ‚˜λ§ˆ 'μ–΄?' ν•˜λ©° μ΅μˆ™ν•œ ꡬ문듀이 λ³΄μ΄λŠ” 것이 μ „λΆ€μ˜€κ³ ,

닀행이 λ•Œλ‘œλŠ” μ΅μˆ™ν–ˆλ˜ ꡬ문이 'μ•„~ μ €λ ‡κ²Œ μž‘λ™ν–ˆμ—ˆμ§€?' 라며 μ΄ν•΄ν•˜κΈ°λ„ ν–ˆλ‹€.

κ·Έλž˜λ„ κ·Έλ§ˆλ‚˜ λ‚΄κ°€ κΎΈμ€€ν•œ λ°˜λ³΅μ„ 톡해 ν•™μŠ΅μ„ ν•˜κ³  μžˆλ‹€λŠ” 것을 λŠκΌˆλ‹€.

쒋은 μ†Œμ‹μΈ 것 κ°™λ‹€.

 

ν™•μ‹€νžˆ 코딩은 μ–΄μ©Œλ©΄ ν™”λ©΄ 상에 κ·Έλƒ₯ 띑 ν•˜κ³  μ˜¬λΌμ™€ μžˆλŠ” 방법에 λΆˆκ³Όν•˜λ‹€.

마치 μ„€λͺ…은 μ—†κ³ , μ•Œμ•„μ„œ ν•΄μ„ν•΄μ•Όν•˜λŠ” 그런 κ°„νŒ 같은거.

κ·Έλž˜μ„œ μ„€λͺ…해쀄 μ‚¬λžŒμ΄ ν•„μš”ν•˜κ³  λ“£λŠ” μ‚¬λžŒμœΌλ‘œμ„œ ꡬ문을 μ΄ν•΄ν•œ λ‚΄μš©μ„ 말둜써 ν‘œν˜„ν•˜λŠ” 것이 정말 μ€‘μš”ν•˜λ‹€λŠ” 것을 λŠκΌˆλ‹€.

μ™„μ „νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν•΄λ„ 말둜 해보고,  풀어보고 ν•˜λ©΄μ„œ λ‚΄κ°€ λ‚¨κ²Όλ˜ 흔적을 λ‹€μ‹œ 봀을 λ•Œ 더 μΉœκ·Όν•˜κ²Œ 보이지 μ•Šμ„κΉŒ?

마치 μΉœκ΅¬μ™€ μ„œλ‘œ μ•„λŠ” λ‚΄μš©μ— λŒ€ν•΄μ„œ λ…Όν•  λ•Œ'μ–΄? λ­” λŠλ‚ŒμΈ μ•Œμ§€?' ν•˜λ©° λŒ€ν™”λ₯Ό λ‚˜λˆŒ 수 μžˆλŠ” 그런 μΉœλ°€κ°.

 

μ’€ μΉœν•΄μ§€μž μ½”λ”©μ•„.

 

 


 

[였늘 ν•˜λ£¨ 필기식 배운 λ‚΄μš© κΈ°λ‘ν•˜κΈ°]

νŒŒμ΄μ¬μ„ μ œλŒ€λ‘œ λ°°μš°κΈ°μ— μ•žμ„œ

막 첫 λ°œμ„ λ‚΄λ”›λŠ” λ‚˜μ™€ 같은 μ‚¬λžŒλ“€μ—κ²Œ κ°•μ‘°ν•΄μ€€ 말.

 

문법보닀 μ²΄κ³„μ μœΌλ‘œ 이해할 수 μžˆλ„λ‘, λΉ λ₯΄κ²Œ μ΄λ‘ μ„ μŠ΅λ“ν•˜κ³  μˆ™λ‹¬ν•˜κ²Œ μœ„ν•¨.

 

λΆˆμ•ˆν–ˆλ˜ λ‚΄ λ§ˆμŒμ„ μž‘μ•„μ€€ λ°”λžŒμ§ν•œ μˆ˜μ—… λͺ©μ μ΄μ˜€λ‹€.

 


 

반볡문 μ—°μŠ΅

더보기

1. 짝수만 좜λ ₯

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

for num in num_list: # num_list λ₯Ό num으둜 λ°˜λ³΅ν•  것이닀.
    if num % 2 == 0: # λ§Œμ•½ 반볡된 num 이 2 둜 λ‚˜λˆ΄μ„ λ•Œ 0 인 경우
        print(num) # if 의 ν•΄λ‹Ήν•˜λŠ” κ°’λ§Œ print 둜 num 을 좜λ ₯해달라

 

2. 짝수 개수 좜λ ₯

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0 # 증가할 λ³€μˆ˜κ°’μ„ 지정해주고

for num in num_list: # num_list λ₯Ό num으둜 λ°˜λ³΅ν•  것이닀.
    if num % 2 == 0: # λ§Œμ•½ 반볡된 num 이 2 둜 λ‚˜λˆ΄μ„ λ•Œ 0 인 경우
        count += 1 # num 에 ν•΄λ‹Ήν•˜λŠ” count 에 1 μ”© μΆ”κ°€λ˜λŠ” 쑰건을 κ±Έμ–΄μ€€λ‹€.

print(count) # 7

 

3. 리슀트 λͺ¨λ“  숫자 λ”ν•˜κΈ°

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

sum = 0 # 리슀트의 숫자λ₯Ό 더할 그릇을 λ§Œλ“€μ–΄μ€€λ‹€.

for num in num_list: # num_list λ₯Ό num으둜 λ°˜λ³΅ν•  것이닀.
    sum += num # λ§Œλ“  그릇에 λ°˜λ³΅λ¬Έμ„ 톡해 λ“€μ–΄κ°€λŠ” 리슀트 값을 순차적으둜 λ„£μ–΄μ€€λ‹€.

print(sum) # 38

 

4. 리슀트 쀑 κ°€μž₯ 큰 숫자 좜λ ₯

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

max = 0 # 반볡된 쑰건 값을 담을 그릇

for num in num_list: # num_list λ₯Ό num으둜 λ°˜λ³΅ν•  것이닀.
    if max < num: # num 값이 max 보닀 크닀면 / μž‘λ‹€λ©΄ 쑰건이 ν™œμ„±ν™” λ˜μ§€ μ•ŠλŠ”λ‹€.
        max = num # max 값은 num 값을 λ‹΄λŠ”λ‹€.

print(max) # 6

 


 

ν•¨μˆ˜

더보기

ν•¨μˆ˜μ˜ κ°œλ…

- μž‘μ€ 문제λ₯Ό ν•΄κ²°ν•˜λŠ” μž‘μ€ ν”„λ‘œκ·Έλž¨

- 크고 λ³΅μž‘ν•œ 문제λ₯Ό μž‘κ³  κ°„λ‹¨ν•œ 문제둜 λ‚˜λˆ„μ–΄ ν•΄κ²°

 

ν•¨μˆ˜μ˜ μ •μ˜

- μ–΄λ–€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” μ½”λ“œλ₯Ό λͺ¨μ•„ 이름을 λΆ™μ΄λŠ” 것

 

ν•¨μˆ˜μ˜ 호좜

- ν•¨μˆ˜μ˜ 이름을 뢈러 ν•¨μˆ˜μ˜ λ‚΄μš©μ„ μ‹€ν–‰

 

ν•¨μˆ˜μ˜ 기본적인 ꡬ쑰

def ν•¨μˆ˜ 이름(맀개 λ³€μˆ˜)
	μ‹€ν–‰ ꡬ문
    Return λ°˜ν™˜κ°’

 

ν•¨μˆ˜ + 쑰건문에 넣을 맀개 λ³€μˆ˜κ°’μ„ λ°”κΏ”κ°€λ©° κ²°κ³Όλ₯Ό 확인할 λ•Œ

def bus_rate(age):
    if age > 65: # 쑰건 : age(맀개 λ³€μˆ˜) κ°€ 65 보닀 크닀면,
        print("무료둜 μ΄μš©ν•˜μ„Έμš”") # λ‹€μŒ 문ꡬλ₯Ό 좜λ ₯
    elif age > 20: # if의 쑰건이 μ•„λ‹ˆκ³ , age κ°€ 20 보닀 크닀면,
        print("μ„±μΈμž…λ‹ˆλ‹€.") # λ‹€μŒ 문ꡬλ₯Ό 좜λ ₯
    else: # μœ„ 쑰건에 ν•΄λ‹Ήν•˜μ§€ μ•ŠμœΌλ©΄,
        print("μ²­μ†Œλ…„μž…λ‹ˆλ‹€") # λ‹€μŒ 문ꡬλ₯Ό 좜λ ₯


bus_rate(27) # μ„±μΈμž…λ‹ˆλ‹€
bus_rate(10) # μ²­μ†Œλ…„μž…λ‹ˆλ‹€
bus_rate(72) # 무료둜 μ΄μš©ν•˜μ„Έμš”

 

μ£Όλ―Όλ“±λ‘λ²ˆν˜Έμ˜ μž…λ ₯을 λ°›μ•„ 성별 좜λ ₯ ν•¨μˆ˜ λ§Œλ“€κΈ°

풀이

def check_gender(pin):
	# 리슀트 μ•ˆμ˜ 값을 μ§€μ •ν•΄μ„œ 뢈러였고 λ‚˜μ˜¨ 값을 int둜 λ³€ν™˜ / 2 둜 λ‚˜λˆ΄μ„ λ•Œ 0 이면,
    if int(pin[7]) % 2 == 0:
        print('μ—¬μ„±μž…λ‹ˆλ‹€.')
    else:
        print('λ‚¨μ„±μž…λ‹ˆλ‹€.')

my_pin = '200101-3012345'
check_gender(my_pin)

ν•΄λ‹΅

def check_gender(pin):
    num = int(pin.split('-')[1][0]) # .split('κΈ°μ€€') 을 μ‚¬μš©ν•΄μ„œ 리슀트의 μ‹œμž‘ μœ„μΉ˜λ₯Ό 정함
    if num % 2 == 0:
        print('μ—¬μ„±')
    else:
        print('남성')

my_pin = "200101-3012345"
check_gender(my_pin)

 


 

νŠœν”Œ & 집합

더보기

νŠœν”Œ

- λ¦¬μŠ€νŠΈμ™€ λΉ„μŠ·ν•˜μ§€λ§Œ λΆˆλ³€μΈ μžλ£Œν˜•

- 값이 λ³€κ²½λ˜λŠ” ν˜•νƒœμ˜ λ³€μˆ˜κ°€ 많기 λ•Œλ¬Έμ— ν‰κ· μ μœΌλ‘œ νŠœν”Œλ³΄λ‹€λŠ” 리슀트λ₯Ό 더 많이 μ‚¬μš©ν•œλ‹€.

- ν˜•νƒœ

t1 = ()
t2 = (1, 2, 3)

 

집합

쀑볡을 μ œκ±°ν•˜λŠ”, 집합을 κ΅¬ν˜„

- 쀑볡을 ν—ˆμš©ν•˜μ§€ μ•ŠμœΌλ©°, μˆœμ„œκ°€ μ—†λ‹€.

- ν˜•νƒœ

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) # {1, 2, 3, 4, 5}

 

ꡐ집합 & 합집합

- ν˜•νƒœ

a = ['사과','감','μˆ˜λ°•','μ°Έμ™Έ','λ”ΈκΈ°']
b = ['사과','멜둠','청포도','ν† λ§ˆν† ','μ°Έμ™Έ']

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

print(a_set & b_set)  # ꡐ집합 {'μ°Έμ™Έ', '사과'}
print(a_set | b_set)  # 합집합 {'멜둠', '청포도', 'μ°Έμ™Έ', 'λ”ΈκΈ°', '사과', 'ν† λ§ˆν† ', 'μˆ˜λ°•', '감'}

 

차집합

- ν˜•νƒœ

student_a = ['물리2','κ΅­μ–΄','μˆ˜ν•™1','μŒμ•…','ν™”ν•™1','ν™”ν•™2','체윑']
student_b = ['물리1','μˆ˜ν•™1','미술','ν™”ν•™2','체윑']

a_set = set(student_a)
b_set = set(student_b)

print(a_set - b_set) # {'물리2', 'κ΅­μ–΄', 'ν™”ν•™1', 'μŒμ•…'}

 


 

f-string

더보기

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 = s['score']
    print(name, score) # 영수 70 ...

- λ§Œμ•½ μ•„λž˜μ™€ 같은 ν˜•νƒœλ‘œ μ‚¬μš©ν•˜κ³  μ‹Άλ‹€λ©΄

for s in scores:
    name = s['name']
    score = s['score']
    print('영수의 μ μˆ˜λŠ” 100점 μž…λ‹ˆλ‹€.')

- 일반적인 방법

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}μ μž…λ‹ˆλ‹€')

 


 

try-except

더보기

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:
    try: # tre 문을 톡해
        if person['age'] > 20: # 쑰건을 κ²€ν† ν•˜κ³ 
            print(person['name'])
    except: # 쑰건에 λΆ€ν•©ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄
        name = person['name'] 
        print(f'{name} - μ—λŸ¬μž…λ‹ˆλ‹€') # κ·Έ ν•­λͺ©μ€ μ—λŸ¬ 좜λ ₯

 


 

파일 뢈러였기

더보기

- μ—¬λŸ¬ 파일이 μƒμ„±λ˜κ³  λ‹€λ₯Έ 파일의 ν•¨μˆ˜λ₯Ό 뢈러였고 싢을 경우

- 예) main_test.py < main_func.py

- main_test.py

from main_func import *

say_hi()

say_hi_to('영수')

- main_func.py

def say_hi():
    print('μ•ˆλ…•')

def say_hi_to(name):
    print(f'{name}λ‹˜ μ•ˆλ…•ν•˜μ„Έμš”')

 


 

ν•œ μ€„μ˜ λ§ˆλ²• : κ΅¬λ¬Έμ„ μ’€ 더 μ§κ΄€μ μœΌλ‘œ 보기 μœ„ν•œ 방법

ifλ¬Έ - μ‚Όν•­μ—°μ‚°μž : 항이 3κ°œλΌμ„œ μ‚Όν•­ μ—°μ‚°μž

더보기

- ν˜•νƒœ

1. 일반적인

num = 3

if num % 2 == 0:
    result = '짝수'
else:
    result = 'ν™€μˆ˜'
    
print(f'{num}은 {result}μž…λ‹ˆλ‹€')

2. μ‚Όν•­μ—°μ‚°μž

num = 3

# if num % 2 == 0:
#     result = '짝수'
# else:
#     result = 'ν™€μˆ˜'

result = ('짝수' if num % 2 == 0 else 'ν™€μˆ˜μˆ˜')

print(f'{num}은 {result}μž…λ‹ˆλ‹€')

for문

더보기

- ν˜•νƒœ

1. 일반적인

a_list = [1, 3, 2, 5, 1, 2]

b_list = [] # 빈 그릇 λ§Œλ“€κΈ°
for a in a_list: # 반볡문
    b_list.append(a*2) # 빈 그릇에 값을 μ‚½μž…

print(b_list) # [2, 6, 4, 10, 2, 4]

2. forλ¬Έ ν•œλ°©μ— μ“°κΈ°

a_list = [1, 3, 2, 5, 1, 2]

# b_list = [] # 빈 그릇 λ§Œλ“€κΈ°
# for a in a_list: # 반볡문
#     b_list.append(a*2) # 빈 그릇에 값을 μ‚½μž…

b_list = [a*2 for a in a_list] # a 리슀트의 a λ₯Ό λ°˜λ³΅ν•  λ•Œλ§ˆλ‹€ a*2 λ₯Ό 해라

print(b_list) # [2, 6, 4, 10, 2, 4]

 

Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.