관리 메뉴

IT journey

Python - 자료형 (숫자형,문자열,불린형) 본문

개인공부공간/Python

Python - 자료형 (숫자형,문자열,불린형)

step 2021. 5. 21. 16:40
728x90
반응형

직접 내용 정리하고 만든 예이니 퍼가실 때는 출처를 남겨주세요:)

형변환

데이터의 형태를 변환합니다.

str(데이터) : 문자열로 변환합니다.

int(데이터) : 정수로 변환합니다.

float(데이터) : 실수로 변환합니다.

 


숫자형

1. 숫자형 종류

숫자형
정수 0,5,-2
실수 4.03 , -0.7, 3.5e+3, 3.6e-3
복소수 3+2j, 2-5j
8진수 0o25 , 0o31
16진수 0x4B , 0xEF

(1) 정수형

정수를 뜻하는 자료형을 말합니다.

(2) 실수형

실수형은 소수점이 포함된 숫자를 뜻하는 자료형을 말합니다.

소수점 표현 방식의 예

a = 2.32E10 #E 대신 e를 써도 됩니다. 
print(a)

위 a를 출력하면 2.32E10이 나오며 이 의미는 2.32*1010  입니다.

(3) 8진수와 16진수

10진수  -->  0,1,2,3,4,5,6,7,8,9

2진수(bin) --> 0,1,2

8진수(oct) --> 0,1,2,3,4,5,6,7

16진수(hex) --> 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f

 

8진수를 만들때는 0o 또는 0O(숫자 0+알파벳 소문자 o 또는 대문자 O)로 시작하면 만들 수 있습니다.

16진수를 만들때는 0x로 시작하면 됩니다.

 

이번엔 16진수를 2진수로 바꿀 때는 bin(넣고자 하는 16진수 값)로 바꾸면 됩니다. 

그렇다면 2진수를 10진수로 바꿀 때는 2진수만 입력해주면 자동으로 바뀐다는 것을 알 수 있겠죠?

 

2. 산술연산자

산술연산자 Python 수식
덧셈(+) 1+2
빼기(-) 2-2
곱셈(*) 3*5
나누기(/) 4/2
나눗셈을 한 후 소수점 이하를 버림(//) 5//3
나눗셈을 해서 나머지(%) 5%3
제곱근(**0.5) 2**0.5
거듭제곱(**) 4**5

 

** 참고사항 : 몫과 나머지를 구하는 함수는 divmod()로 아래와 같이 사용할 수 있습니다.

divmod(6,4)

 

3. 최대, 최소를 구할 수 있는 함수 max()와 min()

max(100,10,50) #최대
min(300,30,3000) #최소

**참고사항 : 아스키코드 관련 함수

max()와 min()함수문자열에다 적용하면 ASCII 문자에 의해 결과 출력됩니다.

숫자, 알파벳 대문자, 알파벳 소문자 순으로 크기를 계산해 가장 크거나 작은 수를 반환해줍니다.

max('thunderbolt')
min('thunderbolt')
min('1Aa')
max('1Aa')

ord()함수 :  문자열을 아스키코드로 보여줍니다.

ord('A')

chr()함수 : 아스키코드를 문자열로 보여줍니다.

chr(71)

문자열

1. 문자열

(1) 정의 

문자의 나열 (문자들의 집합)을 의미합니다.

(2) 사용법

- 큰 따옴표를 양쪽에 붙여야 합니다.

- 작은 따옴표를 양쪽에 붙여야 합니다.

- 큰따옴표 3개를 연속으로 써서 양쪽에 붙여야 합니다.

- 작은 따옴표를 3개를 연속으로 써서 양쪽에 붙여야 합니다.

- 문자열 안에 작은 따옴표나 큰따옴표를 포함시키고 싶을 때에는 아래 방법들 중 하나를 선택해서 해야 합니다.

 

1) 문자열 안에 작은 따옴표 포함시키고 싶을 때에는 아래와 같이 사용해야 합니다.

print("Python's fun")

2) 문자열에 큰 따옴표 포함시키고 싶을 때에는 아래와 같이 사용해야 합니다.

print('"Python is fun.", she says.')

3)\를 이용하여 작은따옴표와 큰따옴표를 문자열에 포함시키고 싶을 때에는 아래와 같이 사용해야 합니다.

print("Python\'s fun" )
print("\"Python is fun.\"she says.")

(3) 이스케이프 코드

이스케이프 코드 의미
\n 개행(줄바꿈)
\r 캐리지 리턴
\" 큰 따옴표 출력(")
\' 작은 따옴표 출력(')
\000 널문자
\t 수평탭
\\ '\'문자 표현('\')

(4) 문자열 연산하기

1) 더하기

문자열 더해서 연결합니다.

print("Hello"+" Python")

2) 곱하기 (문자열*반복하고 싶은 수)

문자열의 반복을 의미합니다.

print("Hello"*3)

(5) 인덱싱과 슬라이싱

파이썬은 0부터 수를 셉니다.

 

(1)인덱싱

인덱싱(indexing)은 무엇가를 가리킨다는 의미입니다.

 

쓰는 법은 변수명[index] 입니다.

str = "Follow your own star."
str[3]
str[-3]

위 코드에 대해 간략히 설명해보자면 str[3]은 앞에서부터 세고 str[-3]은 뒤에서부터 셉니다.

 

(2)슬라이싱

슬라이싱(Slicing)은 무엇가를 잘라낸다는 의미입니다.

 

쓰는 법은 변수[시작번지:끝번지] 입니다.

이 때, 시작번지는 자신의 데이터를 포함하나 끝 번지는 자신의 데이터를 포함하지 않습니다.

 

str = "Follow your own star."
str[1:6]

그렇다면 위 코드는 앞에서 1번째에서 6번째를 포함하지 않고 뽑아냅니다.

그럼 이 슬라이싱을 가지고 문자열을 나눌 수 있게 될 것이고 그것을 변수에다 저장할 수 있게 될 겁니다.

 

(6) 포매팅

의미

문자열 내에 어떤 값을 삽입하는 방법

 

포맷 코드

코드 설명
%s 문자열(String)
%c 문자 1개(Character)
%d 정수(Integer)
%f 부동 소수(floating-point)
%o 8진수
%x 16진수
%% Literal %(문자(리터럴)‘%’ 그 자체)

 

포맷 코드 사용한 예 1

#정수(숫자형) 대입
"제 나이는 %d 살입니다." %25

#문자열 대입
"저의 이름은 %s입니다" %"둘리"

#여러 개 값(숫자형 변수와 문자열 변수를 대입)
number = 12
day = "two"
"I had stdided for %d hours. So I slept for %s days." %(number,day)

포맷 코드 사용한 예 2

#부동 소수 대입
"I had studied for %f hours"%10.5

#Literal %(문자(리터럴)‘%’ 그 자체)
"Percentage is %d%%" %70

포맷 코드 활용 (소수점 표현 하기)

"%f" %1.543 #1.54300 출력
"{}".format(1.543) #1.543 출력
"%.1f" % 1.543 #소수점 1자리까지 출력 ("{0:.1f}".format(1.543) 과 같은 의미)

"{0:.2f}".format(1.234) #소수점 둘째자리까지 출력

y=3.456789
"{0:0.4f}".format(y) #소수점 아래 0번째부터 3번째까지 출력("%0.4f" %3.456789 와 같은 의미)
"{0:10.4f}".format(y) #4칸뛰고 3.4568를 출력("%10.4f" %3.456789 와 같은 의미)


포맷 코드 활용(정렬, 공백 처리하기)

㉮왼쪽 정렬 ('{index:<길이}'.format(값))

"%-10s"%'hello' #hello를 왼쪽으로 쓴 후 5칸 공백으로 남겨둠
"%-6sPython"%'Hi' #Hi를 왼쪽으로 쓴 후 4칸 공백으로 남겨두고 Python찍음
"{0:<10}".format("Python") #Python을 왼쪽으로 쓴 뒤 4칸 공백으로 남겨둠

㉯오른쪽 정렬 ( '{index:>길이}'.format(값) )

"%10s"%'hello' #<-5칸 공백 후 hello를 오른쪽으로 씀->("{0:>10}".format("hello") )

㉰가운데 정렬

#가운데 정렬
"{0:^10}".format("Python")

㉱ 공백 채우기

"{0:!^10}".format('Hello') #Hello를 가운데 정렬을 함과 동시에 공백에는 !를 넣고 출력
"{0:!>10}".format('Hello') #Hello를 오른쪽 정렬을 함과 동시에 공백에는 !를 넣고 출력
"{0:!<10}".format('Hello') #Hello를 왼쪽 정렬을 함과 동시에 공백에는 !를 넣고 출력

㉲ 숫자 개수 맞추기( '%0 개수d' %숫자   또는    '{인덱스:0개수d'}.format(숫자)  이 때, 인덱스빼고 :만 넣어도 된다.

'%04d'%1 #자리는 4개이고 1을 넣은 뒤 남은 빈 공간은 0으로 채움
'{0:03d}'.format(25) #자리는 3개이고 25를 넣은 뒤 남은 빈 공간은 0으로 채움
'%08.2f'%2.6 #자리는 8개이고 3.6을 넣은 뒤 소수점 두자리 후 남은 빈 공간은 0으로 채움

㉳ 채우기와 정렬을 조합해서 사용('{인덱스:[[채우기]정렬][길이][.자릿수][자료형]}')

'{0:0<10}'.format(11) #길이 10, 왼쪽으로 정렬하고 남는 공간 0으로 채움
'{0:0>10}'.format(11) #길이 10, 오른쪽으로 정렬하고 남는 공간 0으로 채움
'{0:x>10}'.format(11) #길이 10, 오른쪽으로 정렬하고 남는 공간 x로 채움

㉴기타

format(1493500, ',') #'1,493,500' 가 나옴

 

format 함수를 사용한 포매팅

format 메서드 사용하기'{index}'.format(값)

문자열 포매팅은 {}(중괄호)안에 포매팅을 지정하고 format메서드로 값을 넣습니다.

 #0에 Python이 대입
'hi,{0}'.format('Python')
"I eat {0} oranges".format(3)

#0에는 I대입, 2에는 T대입, 3에는 journey 대입
'hi,{0}{2}{1}'.format('I',' journey','T')

#0에는 Hi를 1에는 Python 대입
'{0}{1}{0}{1}'.format('Hi','Python')

format 메서드에서 인덱스 생략하기

"{}".format("둘리")

#IT,journey가 순서대로 대입
'Hi, {}{}'.format('IT', ' journey')

#language='Python',version=3.72 대입
'hello,{language}{version}'.format(language='Python',version=3.72)

 '{{ {0} }}' .format('Python') #]{'Python으로 나옴''}

 

(6) 1과 '1'은 다릅니다.

1은 숫자형 이고  '1'은 문자형 입니다.

 

(7) 내장함수

len() : 문자열의 길이 구하는 함수

참고로, 공백도 같이 계산해줍니다.

len('thunderbolt')

**참고사항 : 리스트의 길이를 구할 때도 이용됩니다.

animal=['cat','dog','duck']
print(len(animal))

count() : 문자열의 개수를 세는 함수

사용 방법은 count("문자열") 입니다. 현재 문자열에서 특정 문자열이 몇 번 나오는지 알아내는 함수입니다.

a = "Information Technology"
a.count('no')

find() : 위치를 알려주는 함수입니다. 존재하지 않으면 -1을 반환합니다.

사용 방법은 find('찾을 문자열')입니다.

문자열에서 특정 문자열을 찾아 인덱스를 알려주고 문자열이 없으면 -1을 반환합니다.

기본적으로 왼쪽에서부터 문자열을 찾고 같은 문자열이 여러 개일 경우에는 처음 찾은 문자열의 인덱스를 알려줍니다.

a = "Information Technology"
a.find('o')
a.find('x')

** 참고로, 오른쪽에서 문자열 위치 찾는 방법은 rfind('찾을 문자열')입니다.

a.rfind('o') #오른쪽에서부터 문자열 위치찾기

index() : 위치를 알려주는 함수입니다. 

a="Information technology"
a.index('o')
a.index('x')
#2번째에서 9번째 위치에서 o 의 위치 찾는다는 의미입니다.
a.index('o',2,9) # index(value, start, end) 

**find()와 index()의 차이점

find()는 찾는 문자열이 없으면 -1을 반환해주고 index()는 찾는 값이 없으면 에러를 반환해줍니다. 

upper() : 소문자를 대문자로 바꾸는 함수입니다.

a="Orange Ice Cream"
a.upper()

lower() : 대문자를 소문자로 바꾸는 함수입니다.

a="Orange Ice Cream"
a.lower()

swapcase() : 대소문자 전환하는 함수입니다.

a="Orange Ice Cream"
a.swapcase()

capitalize() :  첫 문자를 대문자로 전환하는 함수입니다.

a= "orange Ice cream"
a.capitalize()

title() : 단어 첫문자를 대문자로 전환하는 함수입니다.

a= "orange Ice cream"
a.title()

join() : 문자열에 삽입하는 함수입니다.

'!'.join('Journey')

문자열을 정렬하는 함수입니다.

ljust(길이)

: 왼쪽 정렬하는 함수로 문자열을 지정된 길이로 만든 뒤에 왼쪽으로 정렬하고 남는 공간은 공백으로 채웁니다.

'Journey'.ljust(10) #10칸 중 우선 Journey로 채운 뒤 남은 부분은 공백으로 처리

rjust(길이) : 오른쪽 정렬하는 함수입니다.

'Journey'.rjust(10)

center(길이) : 가운데 정렬하는 함수입니다.

'Journey'.center(10)

문자열의 공백을 지우는 함수

lstrip() : 왼쪽 공백을 지우는 함수입니다.

' Journey  '.lstrip()


#왼쪽 특정 문자를 삭제하고 싶을 때(lstrip('삭제할 문자'))
',journey.'.lstrip(',')
'journey.'

rstrip() : 오른쪽 공백을 지우는 함수입니다.

' Journey  '.rstrip()

',journey,'.rstrip(',.')

strip() : 양쪽 공백을 지우는 함수입니다.

' Journey  '.strip()

',journey,'.strip(',.')

replace()  :문자열 바꾸는 함수(replace('바꿀 문자열','새문자열'))입니다.

이 때, 문자열 자체는 변경하지 않으며 바뀐 결과를 반환합니다.

* 참고로, 문자열은 그 요소 값을 변경할 수 없습니다.

a = "Never say never"
a.replace("never","no")

split("구분자") : 문자열을 나누는 함수로 리스트로 저장합니다.

a = "Never say never"
a.split()

a="Never, say, never"
a.split(",")

zfill(길이) : 지정된 길이에 맞춰서 문자열 왼쪽에 0을 채우는 함수입니다.

'50'.zfill(5)

#!!!문자열의 길이보다 지정된 길이가 작다면 아무것도 채우지 않습니다.
'hi'.zfill(1)

불린형(논리 자료형)

1. 불린

참(True)와 거짓(False)로 표현할 때 쓰입니다.

이 때 True 는 1이고 False는 0입니다.

 

안에 값이 있으면 참인 것처럼 보입니다. 그래서 띄어쓰기 역시 참입니다.

print(10>20)
print(bool(5>1))
print(bool(" "))

주의사항 !!  0이 안에 들어가면 거짓이 출력됩니다.

print(bool(0))

 

2. 관계연산자

 

관계연산자 설명
x<y x가 y보다 작다
x>y x가 y보다 크다
x == y x와 y가 같다
x != y x와 y가 같지 않다.
x>=y x가 y보다 크거나 같다
x<=y x가 y보다 작거나 같다

 

 

2021.05.20 - [개인공부공간/Python] - Python - 내장함수 1편

 

Python - 내장함수 1편

직접 내용 정리한 내용이니 퍼가실 때는 출처 부탁드려요 :) 1. print()함수 화면에서 데이터를 출력할 때 사용하는 함수 (1) print()함수 사용한 예 1) , 를 사용했을 시에는 띄어쓰기로 출력합니다. pr

step-journey.tistory.com

 

 

 

 

728x90
반응형

'개인공부공간 > Python' 카테고리의 다른 글

Python-함수  (17) 2021.05.26
Python - 제어문  (10) 2021.05.25
Python-자료형(사전형,집합)  (10) 2021.05.24
Python-자료형(리스트,튜플)  (0) 2021.05.22
Python - 내장함수 1편  (4) 2021.05.20
Comments