5/3 Today I Learned

boks·2024년 5월 3일
post-thumbnail

파이썬 기초

양승환 강사님

  • 책추천

    DO it 점프 투 파이썬
    혼자 공부했던 파이썬
    처음 시작하는 파이썬
    고성능 파이썬
    전문가를 위한 파이썬

  • 이메일 : shy1523@maiclass.com

  • 강의 목표: 최소한의 파이썬 능력을 가지자!

현업에서 일하면, 데이터를 안주는 경우와 데이터를 엉망으로 주는 경우가있다.
따라서 데이터를 수집하고 전처리하는 것이 매우 기본이다.

파이썬?

  • 파이썬은 컴파일러 언어보다 느리다는 단점이 있지만, 쉽고 유지보수가 좋다는 장점이 있다. 또 간결함, 오픈소스 등등 많은 장점이 있어서 매우 많은 곳에 주 언어로 자리 잡았다.

  • 할 수 있는 일
    데이터 분석
    ML / DL
    웹프로그래밍(ai 개발자와는 방향성이 좀 다르다)
    수치 연산 프로그래밍 (넘파이를 이용 - 넘파이는 C기반으로 만들어져서 빠르다)
    데이터베이스 프로그래밍( 접속하는 정도만 하지, 프로그래밍은 오라클 따위를 씀)

  • 할 수 없는 일
    리눅스 같은 운영체제에서 엄청난 횟수의 반복과 연산이 필요한 일
    안드로이드 앱개발은 어려움

구글 코랩

  • 설치 없이 많은 라이브러리 사용가능
  • 은행같은 폐쇄적인 곳에서는 사용불가하다.

새로운 폴더 만들고 시작!
헬로월드~~

핫키

  • 전체 핫키 보기

    Ctrl + M, H

  • 코드셀 -> 마크다운셀

    Ctrl + M, M

  • 마크다운셀 -> 코드셀

    Ctrl + M, Y

  • 되돌리기

    Ctrl + M, Z

  • 선택 줄 주석으로 변경

    Ctrl + /

문자 자료형

  • 뉴진스의 디토 가사 예제로 확인하기

print에 대해서 많이 써보는 시간이였다.

새로 알게된 스킬

  1. 문자열 연속으로 쓰기 : ''' 문장 '''
  • 예시
# ''' 문장 '''
print('''Stay in the middle
Like you a little
Don't want no riddle
말해줘 say it back, oh, say it ditto
아침은 너무 멀어 so say it ditto''')

-> ```을 쓰면 뒤에 큰따옴표 작은 따옴표 오는거 상관없이 쭉 글을 적을 수 있다.

  1. 구문오류 SyntaxError(구문오류)
  • 작성한 코드가 뭔가에 문제가 있어서 아예 실행조차 되지 않는다는 의미
  • 오류가 나도 대충 봐서 이런 구문이 있는 줄 몰랐다.

쉽게 잊는것

  • 까먹고 있던 것은 개행을 \ 로 없애는것
# 위아래 개행빈칸 없이 바로 나온다
print('''\
Stay in the middle
Like you a little
Don't want no riddle
말해줘 say it back, oh, say it ditto
아침은 너무 멀어 so say it ditto\
''')

-> 다 아는 것이다하고 까불지 말고 집중해서 듣자!

문자열 연산자

문자열 + 숫자

  • 당연히 에러가 난다
  • 구문 확인

    can only concatenate str (not "int") to str
    눈에 익혀두자!

스킬

  • print('---'* 20)
  • 가장 많이 쓰이는 문자열 연산

알고 있지만 다시 상기!

print('결과 1')
print('---'* 20)
print('결과 2')
print('---'* 20)
print('결과 3')

문자 선택 연산자 (인덱싱)

  • [ ]
  • 형태

    문자열[숫자]

  • 숫자에는 시작:끝
  • 시작이나 끝은 아무 것도 적지 않으면 각각에 제일 처음, 제일 끝이 들어감
  • 당연히 시작은 이상, 끝은 미만의 범위
    • 값이 들어가면 뒤에서부터 역순으로 카운팅. 맨끝의 인덱스는 -1

사실 슬라이싱은 문자열 뿐만아니라 다른것도 포함된다. 여기서 잘 개념잡고 가자

건너뛰기 [::숫자]

  • 문자[::-1]가 거꾸로 쓰기인 줄은 알았지만 이게 건너 뛰어쓰기인줄 몰랐다.
  • 문자[::2] : 두칸씩 건너뛰어 쓰기
  • 문자[::-1][::2] : 거꾸로가며 두칸씩 건너뛰어 쓰기

숫자 자료형

en / En

  • 10의 n 제곱을 나타내는 표현
  • 쓸일은 없지만 종종 나오면 읽고 이해해야함
print(0.52783e3)
print(0.52783E3)
print(527.83e-3)
print(527.83E-3)
print(0.52783E10)

숫자연산자

  • 종류
        • / // % **

/ %

두 연산자는 연산 뒤의 결과가 반드시 실수형으로 나온다!!!
당연하지만 놓치기 쉬우니 기억하자!

_

  • _ 는 숫자 중간에 쓰이면 무시된다. 돈 숫자 단위 같이 코드에서 가독성 위해서 쓸때 유용하다.
  • 예시
print(5_7)
print(type(5_7))

print(100_000_000)
print(type(100_000_000))


변수

  • 값을 저장할때 사용하는 식별자
  • 파이썬에서 변수를 사용하다보면 TypeError가 일어날 롹률이 높지만, 편리하고 유연하다.

꿀팁 - 변수명은 GPT한테 물어보면 매우 잘지어준다!
데이터를 메모리에 할당한다. 데이터가 있는 주소를 가리키고 있는 것이 변수라 생각하면 될듯!

복합 대입 연산자

  • 연산자는 모두 복합연산자로 바꿔 표현할 수 있다.
  • 예시
a =a +1
print(a, type(a))
b +=1
print(a, type(b))

-> 두개는 완전히 같은 표현이다.

문자열 복합대입연산

  • 문자도 문자끼리 연산이 가능하므로 복합대입연산이 가능하다
  • 예시
string = '안녕하세요'
string += '!'
print(string)

변수 지정 시 주의사항

  • 변수명을 키워드와 똑같이 하면 안된다
  • 키워드 명 살펴보기
import keyword
print(keyword.kwlist)

사용자에게 입력 받기

input()

  • 입력 받은 값의 타입은 무조건 문자형이다!
    -> 숫자를 입력받아 계산이 필요하면 int(), float() 함수로 정수, 소수로 바꿔줘야한다!

int(), float() 주의 사항

  • 문자열을 숫자로 변경이 불가능한 경우
int('안녕하세요') # 이런 문자형은 숫자형으로 변환이 불가능하다
float('안녕하세요')
int('52.273') # 소수 형태의 문자열 입력시 에러가 난다.
  • 정수형으로 변환할때 int로 묶는 것을 조심하자. 실수가 문자열로 쓰였을때, int()함수를 쓸 수가 없다.

중간 퀴즈

  • 인치 단위를 센치 단위로 변환!
# inch 단위를 입력 받아서 cm 단위 변경해주는 프로그램(1 inch = 2.54 cm)
inch_in = int(input('길이를 입력하시오 .(inch)'))
cm_out = inch_in * 2.54
print('입력값 : ',inch_in,'inch','-->','출력값 : ', cm_out,'cm')

매우 쉽군!


숫자와 문자열의 다양한 기능

format()

문자열.format(a,b,c..)

  • 문장열 안에 있는 {}에 순서대로 a,b,c 할당
  • 더 빠르고 간결하게 기입가능하다.

정수 자료형 출력의 다양한 형태

  • {:d}

    '{:d}'.format(n)
    d 의 뜻은 정수가 들어온다고 미리 표기한 것(n은 정수)

{:nd}

'{:5d}'.format(n)
5d 의 뜻은 5칸에 오른쪽 정렬한다는 뜻

활용
  • 우측 정렬해야할때 매우 유용하다.!!
# 위의 내용을 어디다 쓰는가?
print('{}'.format(1))
print('{}'.format(12))
print('{}'.format(123))
print('{}'.format(1234))
print('{}'.format(12345))

print()
# 아래처럼 정리해야할 때 쓴다.
print('{:5d}'.format(1))
print('{:5d}'.format(12))
print('{:5d}'.format(123))
print('{:5d}'.format(1234))
print('{:5d}'.format(12345))

  • 빈칸을 0으로 채우기
print('00001')
print('00012')
print('00123')
print('01234')
print('12345')

print('{:05d}'.format(1))
print('{:05d}'.format(12))
print('{:05d}'.format(123))
print('{:05d}'.format(1234))
print('{:05d}'.format(12345))


-> 이런 식으로 파일 제목 같은 것 정리하여 지을때 매우 편리함

  • 부호가 자릿수에 미치는 영향
print('{:05d}'.format(52))
print('{:05d}'.format(-52))
print('{:06d}'.format(-52))


-> 음수부호가 하나의 자릿수를 차지하는 것을 알 수 있다. 고려해야할 사항이다.

실수 자료형 출력의 다양한 형태

  • {:f}
  • 원하는 소숫점까지 볼 수 있다.(반올림)
print('{:f}'.format(52.273))
print('{:.2f}'.format(52.273))
print('{:.1f}'.format(52.273))
print('{:.4f}'.format(52.273))

문자열 함수

대소문자 바꾸기

  • 소문자로만 받거나 대문자로만 받아야할때 많이 쓰인다!

str.upper()

  • 모든 문자 대문자로 바꾸기
string = 'Hello World!'
print(string.upper()) # 대문자로 바꾸기

str.lower()

  • 모든 문자 소문자로 바꾸기
string = 'Hello World!'
print(string.lower()) # 소문자로 바꾸기

문자열 양옆의 공백 제거하기

strip()

str.strip()

  • 문자열의 좌우 끝단에 공백이 있다면 제거
  • 외부에서 텍스트를 다운 받았을때, 쓸모없는 공백들을 걸러주는 함수
print('   양쪽 공백   ')
print('   양쪽 공백   '.strip())

-> 양쪽 공백이 없어진 모습

lstrip(), rstrip()
  • lstrip() : 왼쪽 공백만 없애기
  • rstrip() : 오른쪽 공백만 없애기

    str.lstrip()

print('   양쪽 공백   '.lstrip()) # 왼쪽 공백만 없애기
print('   양쪽 공백   '.rstrip())  # 오른쪽 공백만 없애기


-> 상단은 좌측 공백 없애기, 우측 공백 없애기

문자열 찾기

find(), rfind()

  • 문자객체.find() : 왼쪽부터 찾아서 처음 등장하는 위치를 찾음
  • 찾는 문자가 있는 경우 - 왼쪽에서 오른쪽 방향
string = '안녕안녕하세요'
print(string.find('안녕'))


-> 가장 처음에 안녕이 있으므로 0 출력하고 끝

  • 문자객체.rfind() : 오른쪽부터 찾아서 처음 등장하는 위치를 찾음
  • 찾는 문자가 있는 경우 - 오른쪽에서 왼쪽 방향
string = '안녕안녕하세요'
print(string.rfind('안녕'))

  • 찾는 문자가 없는 경우
print(string.find('잘가')) # 문장안에 찾는 내용이 없을 경우 -1 이 출력된다.

문자열 자르기

split()

  • 괄호안의 것을 기준으로 모두 나눈다

    str.split()

  • 리스트 값을 반환

string = '10 20 30 40 50 60'
print(string.split(' '))

문자 포함 유무

in

  • True/False 값을 반환한다.
print('잘자' in '안녕')
print('안녕' in '안녕하세요')

profile
설계엔지니어의 변신

0개의 댓글