๐ ํ์ด์ฌ ๋ฌธ๋ฒ(์ด์ฐฝํธ ํํฐ๋)
๐ ํ์ด์ฌ ๊ณผ์ (ํด๋์ค ํ์ฉ, try/except, ๋ฆฌ์คํธ ํํฐ ๋ฐ ์ ๋ ฌ)
1) python์์๋ try / except ๋ฌธ๋ฒ์ ์ฌ์ฉํด ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌ๋ฅผ ํด์ค์ ์๋ค.
number = "num"
try: # try ๊ตฌ๋ฌธ ์์์ ์๋ฌ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ except๋ก ๋์ด๊ฐ
number = int(number) # "num"์ ์ซ์๋ก ๋ฐ๊พธ๋ ๊ณผ์ ์์ ์๋ฌ ๋ฐ์
except: # ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌ
print(f"{number}์(๋) ์ซ์๊ฐ ์๋๋๋ค.")
2) ์๋ฌ ์ข ๋ฅ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ก์ง ์ฒ๋ฆฌ
number = input()
try:
int(number)
10 / number
except ValueError: # int๋ก ๋ณํํ๋ ๊ณผ์ ์์ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋
print(f"{number}์(๋) ์ซ์๊ฐ ์๋๋๋ค.")
except ZeroDivisionError: # 0์ผ๋ก ๋๋๋ฉด์ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋
print("0์ผ๋ก๋ ๋๋์ ์์ต๋๋ค.")
except Exception as e: # ์์์ ์ ์ํ์ง ์์ ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋(๊ถ์ฅํ์ง ์์)
print(f"์์ํ์ง ๋ชปํ ์๋ฌ๊ฐ ๋ฐ์ํ์ต๋๋ค. error : {e}")
# except ๋ฌธ๋ฒ ๋ํ if / elif์ ๊ฐ์ด ์ฐ๋ฌ์์ ์์ฑํ ์ ์๋ค.
1) stacktrace๋ python ๋ฟ๋ง์ด ์๋ ๋๋ถ๋ถ์ ๊ฐ๋ฐ ์ธ์ด์์ ์ฌ์ฉ๋๋ ๊ฐ๋ ์ด๋ค.
2) ์๋ฌ๊ฐ ๋ฐ์ํ์ ๋ ์๋ฌ๊ฐ ๋ฐ์ ํ ์์น๋ฅผ ์ฐพ์๋ด๊ธฐ ์ํด ํธ์ถ ๋ ํจ์์ ๋ชฉ๋ก์ ๋ณด์ฌ์ฃผ๊ณ
๊ฐ๋ฐ์๋ stacktrace๋ฅผ ๋ฐ๋ผ๊ฐ๋ฉฐ ์๋ฌ๊ฐ ๋ฐ์ํ ์์น๋ฅผ ์ถ์ ํ ์ ์๋ค.
def ์ง๊น์ง_๊ฑธ์ด๊ฐ๊ธฐ():
print(error) # ์ ์ธ๋์ง ์์ ๋ณ์๋ฅผ ํธ์ถํ๊ธฐ ๋๋ฌธ์ ์๋ฌ ๋ฐ์
def ๋ฒ์ค_ํ์น():
์ง๊น์ง_๊ฑธ์ด๊ฐ๊ธฐ()
def ํ์น():
๋ฒ์ค_ํ์น()
def ์งํ์ฒ _ํ์น():
ํ์น()
def ํด๊ทผํ๊ธฐ():
์งํ์ฒ _ํ์น()
ํด๊ทผํ๊ธฐ()
"""
Traceback (most recent call last):
File "sample.py", line 17, in <module>
ํด๊ทผํ๊ธฐ()
File "sample.py", line 15, in ํด๊ทผํ๊ธฐ
์งํ์ฒ _ํ์น()
File "sample.py", line 12, in ์งํ์ฒ _ํ์น
ํ์น()
File "sample.py", line 9, in ํ์น
๋ฒ์ค_ํ์น()
File "sample.py", line 5, in ๋ฒ์ค_ํ์น
์ง๊น์ง_๊ฑธ์ด๊ฐ๊ธฐ()
File "sample.py", line 2, in ์ง๊น์ง_๊ฑธ์ด๊ฐ๊ธฐ
print(error)
NameError: name 'error' is not defined. Did you mean: 'OSError'?
"""
1) ์ถ์ฝ์์ด๋?
์ถ์ฝ์์ ๊ธด ์ฝ๋๋ฅผ ๊ฐ๋ตํ๊ฒ ์ค์ผ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ๋จ์ฉํ ๊ฒฝ์ฐ ๊ฐ๋
์ฑ์ด
๋จ์ด์ง๊ณ ์ถํ ์ฝ๋ ๊ด๋ฆฌ๊ฐ ํ๋ค์ ์๊ธฐ ๋๋ฌธ์ ํ์ํ ๋๋ง ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
list, set, tuple, dict ์๋ฃํ์ด ์ถ์ฝ์์ ์ง์ํ๋ค.
๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ๋ ๋๊ฐ์ผ๋ฉฐ, ์ด๋ค ๊ดํธ ๊ธฐํธ๋ฅผ ์ฌ์ฉํ๋์ง / ์ด๋ค ํํ๋ก ์ฌ์ฉํ๋์ง์
๋ฐ๋ผ ์ ์ฅ๋๋ ์๋ฃํ์ด ๋ฌ๋ผ์ง๋ค.
์ถ์ฝ์์ ๋ชจ๋ ๋์ผํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ํ ๊ฐ์ง ์๋ฃํ์ ์ต์ํด์ง๋ฉด ๋ค๋ฅธ
์๋ฃํ์๋ ์ ์ฉํด์ ์ฌ์ฉํ ์ ์๋ค.
2) list / tuple / set ์ถ์ฝ์ ํ์ฉ๋ฒ
# ๊ธฐ๋ณธ์ ์ธ ํ์ฉ ๋ฐฉ๋ฒ
# [list์ ๋ด๊ธธ ๊ฐ for ์์ in ๋ฆฌ์คํธ]
numbers = [x for x in range(5)] # [0, 1, 2, 3, 4]
# ์กฐ๊ฑด๋ฌธ์ ์ถ์ฝ์ ๋ท๋ถ๋ถ์ ์์ฑํ๋ฉฐ, ์ถ์ฝ์์ด True์ธ ๊ฒฝ์ฐ list์ ๊ฐ์ด ๋ด๊ธด๋ค.
even_numbers = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
# ์๋์ ๊ฐ์ด ํ์ฉํ ์๋ ์๋ค.
people = [
("lee", 32),
("kim", 23),
("park", 27),
("hong", 29),
("kang", 26)
]
average_age = sum([x[1] for x in people]) / len(people)
print(average_age) # 27.4
#list ์ถ์ฝ์์ []๋ฅผ ()ํน์ {}๋ก ๋ฐ๊ฟ์ฃผ๋ฉด tuple, set ์ถ์ฝ์์ ์ฌ์ฉํ์ค์ ์๋ค.
3) dictionary ์ถ์ฝ์ ํ์ฉ๋ฒ
# dictionary ์ถ์ฝ์์ ๊ตฌ์กฐ๋ list์ ๋์ผํ์ง๋ง, key / value ํํ๋ก ์ง์ ํด์ผ ํฉ๋๋ค.
people = [
("lee", 32, "man"),
("kim", 23, "man"),
("park", 27, "woman"),
("hong", 29, "man"),
("kang", 26, "woman")
]
people = {name: {"age": age, "gender": gender} for name, age, gender in people}
print(people)
# result print
"""
{
'lee': {'age': 32,
'gender': 'man'},
'kim': {'age': 23,
'gender': 'man'},
'park': {'age': 27,
'gender': 'woman'},
'hong': {'age': 29,
'gender': 'man'},
'kang': {'age': 26,
'gender': 'woman'}
}
"""
1) lambda
2) map ํจ์ ํ์ฉ
# map์ ํจ์์ ๋ฆฌ์คํธ๋ฅผ ์ธ์๋ก ๋ฐ์ ๋ฆฌ์คํธ์ ์์๋ค๋ก ํจ์๋ฅผ ํธ์ถํด์ค๋ค.
string_numbers = ["1", "2", "3"]
integer_numbers = list(map(int, string_numbers))
print(integer_numbers) # [1, 2, 3]
# map ํจ์๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒฝ์ฐ ์๋์ ๊ฐ์ด ๊ตฌํํ ์ ์๋ค.
string_numbers = ["1", "2", "3"]
integer_numbers = []
for i in string_numbers:
integer_numbers.append(int(i))
print(integer_numbers) # [1, 2, 3]
# list ์ถ์ฝ์์ผ๋ก๋ ๋์ผํ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค.
# map๊ณผ list ์ถ์ฝ์ ์ค ์ด๋ค๊ฑธ ์จ์ผ ํ ์ง ๊ณ ๋ฏผ๋๋ค๋ฉด ์ด ๊ธ์ ์ฝ์ด๋ณด์๋๊ฒ์ ์ถ์ฒํ๋ค.
string_numbers = ["1", "2", "3"]
integer_numbers = [int(x) for x in string_numbers]
print(integer_numbers) # [1, 2, 3]
# map ํจ์์ lambda ํจ์๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ ๋ค์ฑ๋ก์ด ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค.
numbers = [1, 2, 3, 4]
double_numbers = list(map(lambda x: x*2, numbers))
print(double_numbers) # [2, 4, 6, 8]
3) filter ํจ์ ํ์ฉ
# filter ํจ์๋ map๊ณผ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์กฐ๊ฑด์ด ์ฐธ์ธ ๊ฒฝ์ฐ ์ ์ฅํ๋ค.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even_numbers = list(filter(lambda x: x%2 == 0, numbers))
print(even_numbers) # [2, 4, 6, 8]
# filter ํจ์ ๋ํ list ์ถ์ฝ์์ผ๋ก ๋์ผํ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์๋ค.
numbers = [1, 2, 3, 4, 5, 6, 7, 8]
even_numbers = [x for x in numbers if x%2 == 0]
print(even_numbers) # [2, 4, 6, 8]
4) sort ํจ์ ํ์ฉ
# sort ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด list๋ฅผ ์์๋๋ก ์ ๋ ฌํ ์ ์๋ค.
numbers = [5, 3, 2, 4, 6, 1]
numbers.sort()
print(numbers) # [1, 2, 3, 4, 5, 6]
# sort์ lambda ํจ์๋ฅผ ๊ฐ์ด ์ฌ์ฉํ๋ฉด ๋ณต์กํ ๊ตฌ์กฐ์ list๋ ์ ๋ ฌํ ์ ์๋ค.
people = [
("lee", 32),
("kim", 23),
("park", 27),
("hong", 29),
("kang", 26)
]
# ๋์ด ์์ผ๋ก ์ ๋ ฌํ๊ธฐ
people.sort(key=lambda x: x[1])
print(people)
# result print
"""
[
("kim", 23),
("kang", 26),
("park", 27),
("hong", 29),
("lee", 32)
]
"""
โญ ํํฐ๋์ด ์์ธํ ์ค๋ช ํด์ฃผ์ ์ ์ฌํ ๋ฌธ๋ฒ์ด์ง๋ง ์๋ฏ๋ง๋ฏ ์์๊ฐ๋ ์ค์ด๋ค.. ์ค๋๋ ์ด๊น์์ด ๊ณผ์ ๊ฐ ์์๋๋ฐ 2๊ฐ ๋ค ์ด๋ ค์ ์์ด ํ ์ ์์๋ค. ๊ณผ์ ์ ๋ํด์๋ ์์ผ๋ก TIL์ ๊ฐ์ด ์์ฑํ์ง ์๊ณ ๋์ค์ ํ์ธํ๊ธฐ ์ฝ๊ฒ ๋ฐ๋ก ์ฌ๋ฆด ์์ ์ด๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ด๋ ์๊ฐ๋ถํฐ ๋ด๊ฐ ํ์ฌ ์๊ณ ์๋ ์์ค๋ณด๋ค ํจ์ฌ ๋ง์ ๊ฒ์ ์๊ตฌํ๋ ๋ฌธ์ ๋ค์ด ๋๋ถ๋ถ์ด๋ผ ์์ ์๋ ๋ชป๋๊ณ ์๋ค. ๋ฌผ๋ก ๊ตฌ๊ธ๋งํด์ ๋ต์ ๋ณด๋ฉด ์กฐ๊ธ์ ์ดํด๋๋ ๊ฒ๋ค๋ ์์ง๋ง ์ง๊ธ์ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค๋ ๊ธฐ์ด๋ถํฐ ํผํผํ ํ๋๊ฒ ๋์๊ฑฐ๋ผ๊ณ ์๊ฐํด์ ์ ํ ํฌ ํ์ด์ฌ๊ณผ ๊ฐ์์๋ฃ๋ฅผ ๋ณต์ตํ๊ณ ์๋ค. ๋ค๋ฅธ ์ฌ๋๊ณผ ๋น๊ตํ๊ธฐ๋ณด๋จ ๋ด๊ฐ ์ง๊ธ ํ ์ ์๋ ์ ์์ ์ด์ฌํ ํด์ผ์ง๐