복습 - Python 기초 2

minjoo·2022년 7월 17일
0

플레이데이터

목록 보기
2/6

월요일 - 2022.07.11

배운 것

join, find, 정규식 re, 출력 문자열 꾸미기 (fstring, format, %), 파일 읽고 쓰기 (with open, f = open, readlines() 등), 알파벳 키우기 명령어(upper, lower, capitalize 등)

인상적인 코드

# fstring 예시
a = 3
b = 6
print(f'The sum of {a} + {b} = {a+b}') 
---> 'The sum of 3 + 6 = 9'

# format 예시
'The sum of 1 + 2 = {}'.format(1+2)
---> 'The sum of 1 + 2 = 3'

# % 예시
'The sum of %.5f + %d  = %s' % (a, b, add)
---> 'The sum of 1.12345 + 2  = 글자'

기억할 것

정규식 re 명령어, 출력 문자열 꾸미기 손에 익히기, 파일 읽고 쓰기 open

# match: re.match("찾으려는 것", "문자열") ==> "문자열"이 "찾으려는 것"으로 시작하는지 찾음. => 시작하면 위치 표시
re.match("c", "abcdef")

# search: re.search("찾으려는 것", "문자열") ==> "문자열"에 "찾으려는 것"이 있는가? => 있으면 위치 표시
re.search("c", "abcdefc")

# findall: re.findall("찾으려는 것", "문자열") ==> "문자열"에서 "찾으려는 것"을 모두 찾아 리스트로 표시하기
re.findall("c", "abcdefc")

# finditer: re.finditer("찾으려는 것", "문자열") ==> "문자열"에 "찾으려는 것"이 있으면 <callable_iterator at 위치 id> 내보내기
re.finditer("c", "abcdefc")
# open 명령어로 파일 쓰는 방법
with open(파일명, 모드) as 파일을 가리키는 약어:
    print(뭘 쓰려는지, file=약어)

화요일 - 2022.07.12

배운 것

flush 개념, 별 찍기와 중첩반복문, 함수, 비파괴적인 함수 & 파괴적인 함수, 가변인자(*, **)

인상적인 코드

# 정삼각형 별찍기 1
for i in range(4, -1, -1):
    print(' '*i+'*'*(5-i)+'*'*(4-i))
# 정삼각형 별찍기 2
star = '*'
blank = ' '

for i in range(1,6):

  for k in range(5, i, -1): # 좌측 공백
    print(blank, end='')
  
  for j in range(2*i-1):  # 별
    print(star, end='')
    
  for l in range(5,i,-1):   # 우측 공백인데 여기는 없어도 무방
    print(blank, end='')
   
  print()
# name, age 분리해서 다루는 코드
def person_info(**kwargu):
  print(kwargu)

person_info(name=input(), age=input())

기억할 것

  • 파이썬 함수는 비파괴적인 함수(얕은복사처럼 같은 id값 내에서 값을 바꾸는 식)임. 함수 복사할 때 이 점 유의할 것.
  • 함수 실행 결과를 변수에 부여해주지 않으면, aa.function() 식 자체는 Nonetype임. NoneType Error 조심하기.
  • 파이썬 함수에서 여러개의 변수들은 튜플로 묶여서 전달됨. 튜플로 쓰는 게 나을 때와, 튜플을 풀어야 할 때 명확하게 구별하기
  • 함수에서 여러 변수 한번에 입력받아서 묶어 쓰는 기호가 * 붙이는 것, 여러 변수 한번에 입력받지만 각각 떨어져서 취급받는 게 ** 붙이는 것.

수요일 - 2022.07.13

배운 것

함수 호출 구조, 전역변수 vs 지역변수, 재귀함수, 함수형 프로그래밍(익명함수 lambda, List Comprehension, map)

인상적인 코드

# 재귀함수 예시
def recursive(n):
    if n > 10: # 바깥을 빠져나갈 수 있는 조건 - 기저조건(Base Condition)
        return
    print(n, '무한히 반복되는 형태') # RecursionError: maximum recursion depth exceeded while calling a Python object
    recursive(n+1)
# 1부터 45까지 합 구하기 (합구하기 맨날 나오는데 늘 까먹음)
sum=0   # 이후 계산에 방해 안 되는 시작점이 0.

for i in range(1, 45):
    sum += i
print(sum)

# 재귀함수 버전
# 쌤 예시
def recursive_sum(n):
    if n == 0: return 0
    return n + recursive_sum(n-1)   # return 반드시 해줘야함. 안하면 Nonetype error
    
# 1부터 n까지 곱하기
# 쌤 코드
def recursive_multiply(n):
    if n == 1: return 1
    return n * recursive_multiply(n-1)

기억할 것

# 함수 내에서만 쓰는 변수: 지역변수
# 코드 전체에서 쓰이는 변수: 전역변수
# 함수 내에서는 지역변수가 전역변수보다 우선하되, 함수 끝나면 지역변수는 사라짐
# 지역변수를 전역변수로 꺼내오는 명령어: global (비권장)
# lambda로 함수 만드는 법
방법 1.
-   (lambda 매개변수들 : 식)(인수들)
방법 2.
-   객체명 = lambda 매개변수들 : 식
-   객체명(인수들)

# List Comprehension
[(변수에 적용할 수식) for (변수) in (for문이 돌아가는 범위)]

목요일 - 2022.07.14

배운 것

함수형 프로그래밍(filter, enumerate, zip, reduce(계속 반복!)), 모듈, 패키지

인상적인 코드

ex = [1, 2, 3, 4, 5]
list(map(lambda value : value **2, ex)) # map(수식, 수식을 대입할 집합자료형)   # map을 list에 넣어야 값이 나옴.
---> [1, 4, 9, 16, 25]
# 나이만 합쳐서 평균값 출력하기
test2 = [{'name' : '신짱구', 'age' : 5}, {'name' : '신짱아', 'age' : 4}, {'name' : '흰둥이', 'age' : 8}]
# 일단 다 더해주고, 나중에 나눠줘야 평균 뜸. 중간에 len(test_age)를 람다 안에 넣었다가 계산이 잘못됨.
test_age = [i['age'] for i in test2]
reduce(lambda x, y: (x+y), test_age)/len(test_age)

기억할 것

  • map 쓰는법: map(식, 적용대상)
    map은 list, tuple 등 명령어를 앞에 붙여줘야 제대로 값이 표시됨.
  • filter 쓰는법: filter(작동할 function, 적용할 대상인 iterable)
    function이 참인 것만 return하기

금요일 - 2022.07.15

배운 것

예외처리 try-except 등, 객체지향 프로그래밍 개론, class-instance, 클래스의 속성과 기능

기억할 것

try:
    예외가 발생할 가능성이 있는 코드
except:
    예외가 발생할 때 실행할 코드
except:
    예외가 발생할 때 실행할 코드
except:
    예외가 발생할 때 실행할 코드
else: 
    잘 실행되면 실행할 코드
finally:
    되든 안되든 반드시 실행할 코드
  • try-except를 if-else처럼 활용할 수도 있다. True-False 시 실행이 아니라 정상실행-에러 시 실행하기 위한 코드로 쓰면 될듯. 에러상황별로 except 나눠서 쓰기 가능.
  • try-except 손에 잘 익히기.
profile
데이터 만지는 개발자를 향하여

0개의 댓글