μ€λλ νΉκ°κ³Ό
μ ν ν¬ νμ΄μ¬μ κ°μ΄ 곡λΆν΄λ³΄μ!
05-4 μμΈ μ²λ¦¬
νλ‘κ·Έλ¨μ λ§λ€λ€ 보면 μμμ΄ λ§μ μ€λ₯λ₯Ό λ§λκ² λλ€. λ¬Όλ‘ μ€λ₯κ° λ°μνλ μ΄μ λ νλ‘κ·Έλ¨μ΄ μλͺ» λμνλ κ²μ λ§κΈ° μν νμ΄μ¬μ λ°°λ €μ΄λ€. νμ§λ§ λλλ‘ μ΄λ¬ν μ€λ₯ ...
wikidocs.net
try / except
μμΈμ²λ¦¬!
μλ¬κ° λ°μν κ²½μ° μλ¬κ° μλκ³ exceptλ‘ λμ΄κ°λ€!
1. try, except 기본ꡬ쑰
try:
...
except [λ°μ μ€λ₯[as μ€λ₯ λ©μμ§ λ³μ]]:
...
μ€λ₯κ° λ°μνλ©΄ exceptκ° μνλμ§λ§ μ€λ₯κ° λ°μνμ§ μμΌλ©΄ μνλμ§ μλλ€!
2. except ꡬ문 μ¬μ©λ²
μλ₯Ό λ€μ΄λ³΄λ©΄
μ€λ₯λ³λ‘ λ€λ₯΄κ² μ°μ΄μ€ μλ μλλ° μ΄λ€ μ’ λ₯κ° μλμ§ λ¨Όμ μμ보μ
3. μ€λ₯μ μ’ λ₯
1) FileNotFoundError μ€λ₯
λ¨Όμ λλ ν°λ¦¬ μμ μλ νμΌμ μ΄λ €κ³ μλνμ λ
>>> f = open("λμλνμΌ", 'r')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'λμλνμΌ'
2) ZeroDivisionError μ€λ₯
0μΌλ‘ λ€λ₯Έ μ«μλ₯Ό λλλ κ²½μ°
>>> 4 / 0
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
3) IndexError μ€λ₯
aλ 리μ€νΈ [1, 2, 3]μΈλ° a[4]λ a 리μ€νΈμμ μ»μ μ μλ κ°μ΄λ€. λ°λΌμ IndexError μ€λ₯κ° λ°μ
>>> a = [1,2,3]
>>> a[4]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
4) ValueError μ€λ₯
intλ‘ λ³ννλ κ³Όμ μμ μλ¬κ° λ°μν λ
μ΄μΈμ λ λ§μ μλ¬λ μ°Έκ³ !
https://docs.python.org/ko/3/library/exceptions.html
λ΄μ₯ μμΈ — Python 3.10.7 λ¬Έμ
λ΄μ₯ μμΈ νμ΄μ¬μμ, λͺ¨λ μμΈλ BaseException μμ νμλ ν΄λμ€μ μΈμ€ν΄μ€μ¬μΌ ν©λλ€. νΉμ ν΄λμ€λ₯Ό μΈκΈνλ except μ μ κ°λ try λ¬Έμμ, κ·Έ μ μ κ·Έ ν΄λμ€μμ νμλ λͺ¨λ μμΈ ν΄λμ€
docs.python.org
4. μ¬λ¬κ°μ μ€λ₯μ²λ¦¬νκΈ°
try:
...
except λ°μ μ€λ₯1:
...
except λ°μ μ€λ₯2:
...
μ΄λ°μμΌλ‘ μ¬λ¬κ°λ₯Ό μ μ μ μλ€!
μλ₯Ό λ€λ©΄
try:
a = [1,2]
print(a[3])
4/0
except ZeroDivisionError:
print("0μΌλ‘ λλ μ μμ΅λλ€.")
except IndexError:
print("μΈλ±μ± ν μ μμ΅λλ€.")
μ΄λ κ²!!!
while True:
number = input()
#μ ν
μ€ μλ¬λ λ¬Έλ²μ μ€λ₯λΌ μμΈμ²λ¦¬κ° λΆκ°λ₯ν¨
try:
number = int(number)
print(10/number)
except ValueError: # intλ‘ λ³ννλ κ³Όμ μμ μλ¬κ° λ°μνμ λ
print(f"{number}μ(λ) μ«μκ° μλλλ€.")
except ZeroDivisionError: # 0μΌλ‘ λλλ©΄μ μλ¬κ° λ°μνμ λ
print("0μΌλ‘ λλ μ μμ΅λλ€")
except Exception as e: # μμμ μ μνμ§ μμ μλ¬κ° λ°μνμ λ(κΆμ₯νμ§ μμ -> νμ΄μ¬ pepμ λμμλ€!)
print(f"μμνμ§ λͺ»ν μλ¬κ° λ°μνμ΅λλ€. error: {e}")
# except λ¬Έλ² λν if / elif μ κ°μ΄ μ°λ¬μμ μμ±ν μ μμ΅λλ€.
μ€λ₯κ° λ°μνμ λ μ무κ²λ μνκ³ λμ΄κ°λ €λ©΄ passλ₯Ό μ¬μ©νλ©΄ λλ€! returnλ κ°λ₯!
number = input()
try:
number = int(number)
print(10/number)
except:
pass
μΆμ½μ(comprehension)
μΆμ½μμ κΈ΄ μ½λλ₯Ό κ°λ΅νκ² μ€μΌμ μλ€λ μ₯μ μ΄ μμ§λ§, λ¨μ©ν κ²½μ° κ°λ
μ±μ΄
λ¨μ΄μ§κ³ μΆν μ½λ κ΄λ¦¬κ° νλ€μ μκΈ° λλ¬Έμ νμν λλ§ μ¬μ©νλ κ²μ κΆμ₯ν©λλ€.
list, set, tuple, dict μλ£νμ΄ μΆμ½μμ μ§μν©λλ€.
κΈ°λ³Έμ μΈ κ΅¬μ‘°λ λκ°μΌλ©°, μ΄λ€ κ΄νΈ κΈ°νΈλ₯Ό μ¬μ©νλμ§ / μ΄λ€ ννλ‘ μ¬μ©νλμ§μ
λ°λΌ μ μ₯λλ μλ£νμ΄ λ¬λΌμ§λλ€.
μΆμ½μμ λͺ¨λ λμΌν ꡬ쑰λ₯Ό κ°μ§κ³ μκΈ° λλ¬Έμ ν κ°μ§ μλ£νμ μ΅μν΄μ§λ©΄ λ€λ₯Έ
μλ£νμλ μ μ©ν΄μ μ¬μ©ν μ μμ΅λλ€.
κ·Έλ λ€κ³ νλ€!
κ°λ μ±μ΄ λ¨μ΄μ§ μ μλ€κ³ νλλ° κ·Έλ΄λ§νλ€ μ²μμ 보λκΉ μ΄κ² λκ° μΆμλ€
μ΄λ €μ΄ μ½λλ₯Ό μμ±ν λλ μ¬μ© μνλκ² μ’λ€!
# κΈ°λ³Έμ μΈ νμ© λ°©λ²
# [listμ λ΄κΈΈ κ° for μμ in 리μ€νΈ]
numbers = [x for x in range(5)] # [0, 1, 2, 3, 4]
number = [2 for _ in range(5)] # [2, 2, 2, 2, 2]
# 쑰건문μ μΆμ½μ λ·λΆλΆμ μμ±νλ©°, μΆμ½μμ΄ TrueμΈ κ²½μ° listμ κ°μ΄ λ΄κΈ΄λ€.
even_numbers = [x for x in range(10) if x % 2 == 0] # [0, 2, 4, 6, 8]
리μ€νΈ μΆμ½μκ³Ό for λ¬Έμ λΉκ΅ν΄λ³΄μ!
people = [
("lee", 32),
("kim", 23),
("park", 27),
("hong", 29),
("kang", 26)
]
####
sum_age = 0
for i in people:
sum_age += i[1]
average_age = sum_age / len(people)
print(average_age) # 27.4
####
ages = [x[1] for x in people]
sum_ages = sum(ages)
average_age = sum_ages / len(people)
print(average_age) # 27.4
####
average_age = sum([x[1] for x in people]) / len(people)
print(average_age) # 27.4
#list μΆμ½μμ []λ₯Ό ()νΉμ {}λ‘ λ°κΏμ£Όλ©΄ tuple, set μΆμ½μμ μ¬μ©ν μ μλ€!
lambda / map / filter / sort
1. lambda
lambda λ§€κ°λ³μ : ννμ
lambda x, y : x + y
λλ€ν¨μμ 기본ꡬ쑰μ μμμ΄λ€
pythonμμ lambda ν¨μλ λ€λ₯Έ λ§λ‘ μ΅λͺ
ν¨μ(anonymous function)λΌκ³ λ λΆλ¦¬λλ°
lambda ν¨μλ μ£Όλ‘ map / filter / sort ν¨μμ ν¨κ» μ¬μ©λλ€.
λ¨λ μΌλ‘λ μ μ¬μ©λμ§ μλλ€!
2. map
map(ν¨μ, 리μ€νΈ)
map ν¨μλ ν¨μμ 리μ€νΈλ₯Ό μΈμλ‘ λ°μμ 리μ€νΈλ‘λΆν° μμλ₯Ό νλμ© κΊΌλ΄μ ν¨μλ₯Ό μ μ©μμΌμ€λ€μ
μλ‘μ΄ ν¨μμ λ΄μμ€λ€!
numbers = [1, 2, 3, 4]
double_numbers = list(map(lambda x: x*2, numbers))
print(double_numbers) # [2, 4, 6, 8]
μ΄λ°μμΌλ‘!
mapμ μ¬μ©ν λμ μ¬μ©νμ§ μμλλ₯Ό λΉκ΅ν΄λ³΄μ
# map
string_numbers = ["1", "2", "3"]
integer_numbers = list(map(int, string_numbers))
print(integer_numbers) # [1, 2, 3]
# for
string_numbers = ["1", "2", "3"]
integer_numbers = []
for i in string_numbers:
integer_numbers.append(int(i))
print(integer_numbers) # [1, 2, 3]
# list μΆμ½μ
string_numbers = ["1", "2", "3"]
integer_numbers = [int(x) for x in string_numbers]
print(integer_numbers) # [1, 2, 3]
λ°±μ€ μκ³ λ¦¬μ¦ νλ
a, b, c = map( int, input().split() ) μ΄λ° ꡬ쑰 μ λ§ λ§μ΄ μ¬μ©νμλ€!
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)
]
"""
stacktrace
stacktraceλ python λΏλ§μ΄ μλ λλΆλΆμ κ°λ° μΈμ΄μμ μ¬μ©λλ κ°λ
μ
λλ€.
μλ¬κ° λ°μνμ λ μλ¬κ° λ°μ ν μμΉλ₯Ό μ°Ύμλ΄κΈ° μν΄ νΈμΆ λ ν¨μμ λͺ©λ‘μ 보μ¬μ£Όκ³
κ°λ°μλ stacktraceλ₯Ό λ°λΌκ°λ©° μλ¬κ° λ°μν μμΉλ₯Ό μΆμ ν μ μμ΅λλ€.
μ΄λμ λ°μν μλ¬μΈμ§ μ°Ύμ μ μλ€!
μλ¬κ° μ μ΄λ»κ² λ°μλλμ§ μ’ λ μ§κ΄μ μΌλ‘ νμΈν μ μλ€!
'ππͺ > Python' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Python νΉκ° (6) (option, args/kwargs, packing/unpacking) (0) | 2022.09.15 |
---|---|
κ³μ°κΈ° λ§λ€κΈ°(2), filter,sortκ³Όμ (1) | 2022.09.14 |
λν λμ΄ κ³μ°, κ³μ°κΈ°λ§λ€κΈ°, νλ‘ν κ΄λ¦¬κΈ°λ₯ (0) | 2022.09.13 |
Python νΉκ° (4) (class, mutable/immutable) (0) | 2022.09.13 |
μ«μ μΌκ΅¬κ²μ λ§λ€κΈ° (0) | 2022.09.11 |
λκΈ