Sparta Coding Club/Today I Learned [TIL]

[TIL] #DAY - 011 - 파이썬 심화과정(2) (내일배움캠프AI 3기, try / except, stacktrace, 축약식, lambda / map / filter / sort)

양한마리 2022. 9. 14. 21:18
728x90



파이썬 심화과정 둘째날!

오늘도 역시나 어려운 코딩의길

아침마다 실시간 강의 듣다보니 너무 졸리고 힘들다..

오늘 듣는 내용들은 어찌나 귀에 안들어오는지 복습해서 맞추는데 힘들었다.

내일부터는 좀 더 더 더 더 집중해서

화이팅 해보자고

 


Python 강의 5일차

  1. Python 언어의 이해
  2. Python 기초
  3. Python 활용
  4. Python 심화
    • class에 대한 이해
    • mutable 자료형과 immutable 자료형
      • ↑ 4일차 수업 끝
      • ↓ 5일차 수업 시작
    • try / except을 활용한 에러 처리
      • python에서는 try / except 문법을 사용해 에러가 발생했을 때 처리를 해줄수 있습니다.
      • 에러 종류에 따라 다른 로직 처리
        • except ValuError : int로 변환하는 과정에서 에러가 발생했을 때
        • except ZeroDivisionError : 0으로 나누면서 에러가 발생했을 때
        • except Exception as e : 따로 정의하지 않은 에러가 발생했을 때 (권장하지 않는 방법)
          • as e :  에러코드를 'e' 에 담아낸다.
    • stacktrace의 이해
      • stacktrace란?
        • stacktrace는 python 뿐만이 아닌 대부분의 개발 언어에서 사용되는 개념입니다.
        • 에러가 발생했을 때 에러가 발생 한 위치를 찾아내기 위해 호출 된 함수의 목록을 보여주고 개발자는 stacktrace를 따라가며 에러가 발생한 위치를 추적할 수 있습니다.
    • 축약식(Comprehension)
      • 축약식이란?
        • 축약식은 긴 코드를 간략하게 줄일수 있다는 장점이 있지만, 남용할 경우 가독성이 떨어지고 추후 코드 관리가 힘들수 있기 때문에 필요할 때만 사용하는 것을 권장합니다.
        • list, set, tuple, dict 자료형이 축약식을 지원합니다.
        • 기본적인 구조는 똑같으며, 어떤 괄호 기호를 사용하는지 / 어떤 형태로 사용하는지에 따라 저장되는 자료형이 달라집니다.
        • 축약식은 모두 동일한 구조를 가지고 있기 때문에 한 가지 자료형에 익숙해지면 다른 자료형에도 적용해서 사용할 수 있습니다.
      • list / tuple / set 축약식 활용법 (참고자료1)
      • dictionary 축약식 활용법 (참고자료2)
    • lambda / map / filter / sort 활용하기
      • lambda 함수란?
        • python에서 lambda 함수는 다른 말로 익명 함수(anonymous function)라고도 불립니다.
        • lambda 함수는 주로 map / filter / sort 함수와 함께 사용됩니다.
      • map / filter / sort 활용 (참고자료3)

list / tuple / set 축약식 활용법 (참고자료1)

# 기본적인 활용 방법
# [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 축약식을 사용하실수 있습니다.

 


dictionary 축약식 활용법 (참고자료2)

# 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'}
 }
"""

map / filter / sort 활용 (참고자료3)

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

==========================================================================

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

==========================================================================

# 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)
]
"""

09/14 파이썬 과제

파이썬 심화 문법 사용해보기
아래 과제는 모두 클래스를 활용해서 풀어주세요


1.  계산기 심화

요구조건

  • 클래스를 활용해 작성했던 계산기 코드를 활용해주세요
  • 기존처럼 사용자의 입력을 받고 출력하되, try / except를 활용해 사용자의 입력을 검증하는 코드를 추가해주세요
    • 두 번쨰 숫자에 0을 입력하고 나누기를 시도할 경우 “0으로 나눌 수 없습니다” 문구를 출력해주세요
    • 숫자가 아닌 다른 값을 입력했을 경우 “숫자만 입력 가능합니다” 라는 문구를 출력해 주세요

과제 링크 : [Python] 활용편 - 07 - try / except 활용(계산기 심화)


2. 리스트 필터 및 정렬

요구조건 

  • filter 혹은 리스트 축약식을 사용해 코드를 작성해주세요
  • 제공 된 사용자들 중 나이가 20살 미만인 사람들은 제외해주세요
  • 사용자들을 나이 순으로 정렬해주세요

과제 링크 : [Python] 활용편 - 08 - list, filter, sort 활용(리스트 필터 및 정렬)


오늘은 과제는 되는데 알고리즘이 안풀리네..

수학 .... 수학....

 

728x90
반응형