2장 : 파이썬 프로그래밍의 기초, 자료형(숫자형, 문자열)

Kiyong Lee·2021년 4월 6일
0

파이썬

목록 보기
2/21
post-custom-banner

1. 숫자형

숫자형이란? 숫자 형태로 이루어진 자료 형태

1-1) 정수형

정수형이란? 말 그대로 정수를 뜻하는 자료형

EX. a=1, a=355

1-2) 실수형

소수점이 포함된 숫자

EX. a=1.23, a=-9.7

엑셀을 하다보면 8e10 이런 걸 볼 수 있는데 8 * 10^10이었다
이제 알다니..

1-3) 8/16진수

0o가 8진수 0x가 16진수..
그냥 그렇다고 알고 넘어가자잇

1-4) 복소수

복소수를 쓸 때 i를 썼던 기억이 있는데, 파이썬은 j를 쓴다고 한다.

EX. a=7+6j, b=8-6j

복소수 활용 예시

a= 1+2j 일 때,
a.real = 1.0 (실수 리턴)
a.imag = 2.0 (허수 리턴) -> image 아니다 실수 ㄴㄴ
a.conjugate = 1-2j (켤레복소수 리턴)

켤레복소수 ㅋㅋㅋㅋ 공업수학 이후로 오랜만에 듣는다

1-5) 연산자

a**b : a^b
a//b : a/b의 몫만 출력

2. 문자열

문자열이란? 문자, 단어 등으로 구성된 문자들의 집합, ""로 구성되어있으면 다 문자열

2-1) 문자열 사용 방법

문자열 사용 방법은 '', "", """ """, ''' ''' 총 4가지가 있다

사용방법

a. 문자열 안에 작은 따옴표나 큰따옴표를 포함시키고 싶을 때

Python's favorite food is perl 이라는 문구가 있다.

이걸 문자열로 저장하고 싶다면

a = "Python's favorite food is perl" 가 되어야 한다.

이미 문장안에 '가 있기 때문에 '를 쓰면 'Python'에서 문장이 완성됐기 때문이다.

실제로 코딩해보면 invalid syntax error라고 문구가 뜬다

작은 따옴표가 있다면 큰 따옴표를 쓴다는 건데..

아! 그러면 큰 따옴표가 있다면 작은 따옴표를 써야겠네? 라고 눈치껏 알게 되는 것이다.

b. 역슬레시(\n)를 이용해서 '와" 문자열에 포함시키기

역슬레시를 따옴표들 앞에 삽입하면 문자 그 자체로 나타나게 된다는 것인데..

\ 요게 은근 사람 헷갈리게 한다

그냥 큰 따옴표는 작은 따옴표로, 작은 따옴표는 큰 따옴표로 쓰자

여러 줄인 문자열을 변수에 대입하고 싶을 때

문자열이 당연히 한 줄만 될리는 없다

RollinRollin
We ride

이렇게 두 줄 짜리 문장이 있다고 가정하자

이럴 경우 두 가지의 방법으로 나타낼 수 있는데.

a. 이스케이프 코드 삽입

일단 에스케이프 코드가 뭔데? 프로그래밍할 때 사용할 수 있도록 미리 정의해둔 문자조합...

유명한 \n, \t 이런 게 이스케이프 코드다

a= "RollinRollin \n We ride"

이렇게 쓴다고 하는데.. \n 이런 게 은근 사람 헷갈리게 한다

그래서 그걸 보완한 다른 방법이 있다고 한다

아니 글자에 색상넣을 때 html처럼 작성하고 css줘야하네 ㅋㅋㅋ

b. ''', """ 사용

그냥 간단하게

a='''RollinRollin
We ride
''' (혹은 """ """)

이렇게 하면 된다는 것이다

근데 만약 ''' """ 혹은 """ ''' 이렇게하면 어떻게 될까해서 봤더니

EOF while scanning triple-quote...

말 그대로 인용구3개 스캔 중 에러났다 다시 쓰란뜻이다

2-2) 문자열 연산하기

문자열 끼리 더하기, 곱하기가 되는데

a="Brave"
b="Girls" 라면,

a+b = BraveGirls가 되고

a*2+b = BraveBraveGirls 가 된다.

더하기는 문자열 그대로 합쳐서, 곱하기는 중복해서 나오게 해라.. 이뜻이다

a. 문자열 인덱싱과 슬라이싱

인덱싱이란 무언갈 가리키다, 슬라이싱은 무언갈 잘라낸다라는 의미라고 한다

그러면 넥 슬라이싱은...? 오우야;;

a="Brave Girls - Rollin" 일 때,

가. 인덱싱

a[3] = Brav 를 거치며 v가 된다
만약, a[5]는 뭘까? 공백을 제외하고 Brave G 를 거쳐 G가 되어야 하나?

아니다 공백도 세기 때문에 빈칸이 출력된다.

이처럼 0부터 세고 공백도 포함하여 값을 추출한다.

그런데 마이너스 들어가면 어떻게 되나?

a[-1]=n 이 나온다.

아, 마이너스는 역주행이겠구나

Brave Girls - RollinBrave Girls - Rollin 이런식으로 양옆으로 이어져있겠구나 알 수 있다

나. 슬라이싱

'Brave'만 추출하려면 a[0]+... 이걸 다 써야한다

이게 너무 귀찮아서 나온 게 슬라이싱이다

a[0:5] 이렇게해서 범위를 정해주는데 이상~미만 이다

자칫 잘못하면 이상한 값 나올 수 있으니 잘 기억하고 있자

추가로, a[x:] = x이상부터 끝까지가 되고 a[:y]는 처음부터 y미만, a[:]는 첨부터 끝까지

b. 문자열 포매팅

문자열 포매팅이란? 문자열 내에 어떤 값을 삽입하는 방법이다.

숫자 바로 대입, 문자열 바로 대입 이런 게 있는데 프로그래밍하는 사람이 변수 선언해서
그 때 마다 로테이션 돌려야지 무슨 직접 대입하는가

a=10
b="x"

c="num is %s, string is %s" %(a,b)

이렇게 쓰도록 하자

만약 퍼센트로 나타내고 싶다면 %s%% 이렇게 %%라고 써야 한다

c. 문자열 관련 함수들

count('?')

  • ?의 개수를 반환한다
  • 만약 ()안에 아무것도 안쓰고 돌리면 argument 최소 1개라도 쓰라고 에러난다

find('?'), index('?')

  • 둘다 ?가 처음 나온 위치를 반환한다
  • find는 찾는 게 없으면 -1을, index는 substring not found 오류가 발생한다

a.join('?')

  • ?안에 변수 a값을 삽입

a='xyz'
b='1'
c=b.join(a)
print(c)
하면 xyz사이에 1을 넣겠다라는 뜻이어서 x1y1z이 되고

a='xy z'
b='1'
c=b.join(a)
print(c)
하면 yz사이에 공백이 있어서
x1y1 1z가 된다

l/rstrip, strip

lstrip은 가장왼쪽의 공백을 모두 지움, 그럼 r은 반대일테고..
strip은 양 옆 공백을 모두 지운다고 한다

replace

이건 sql에서도 꽤나 유용하게 쓰고 있다
replace('a','b')를 하면 a를 b로 바꾸겠다는 뜻

split

문자열 나누기인데

split()는 공백을 기준으로 나눈다

a='xy z'
b=a.strip()
print(b)
하면 xy z가 되고

만약

a='xyp123pz'
b=a.split('p')
print(b)
를 하면 ['xy', '123', 'z']가 된다

아 split안에 문자열을 넣으면 그 문자열 기준으로 나눠지고 걔는 표기 안되는구나!

여기까지 2-2/2-3 오늘 할당량이고 다시 한 번 읽어보고 내일 출근길에 봐야겠다

profile
ISTJ인 K-개발자
post-custom-banner

0개의 댓글