study blog

Python 내장 데이터 타입 - numeric, text, bool 본문

Python/2. built in types

Python 내장 데이터 타입 - numeric, text, bool

ivo_lee 2020. 1. 23. 10:11

Python Built-in Type (내장 데이터 타입)

- Numeric 타입: int(정수), float(double)(실수), complex(복소수)

- Text Sequence 타입: 문자열(str)

- Bool 타입: True, False (bool)


1. Numeric 타입

- int(정수)

- float(실수)

- complex(복소수)

a = 123   # 정수
b = 3.14159265358979   # 실수
c = 3.14E10   # 3.14* 10^10 (실수)(지수표현-> 작거나 큰 수 표현할 때)
d = 1+2j   # 복소수
e = 0o37   # 0o : 8진수
f = 0xFF    # 16진수

# type() : data type을 알려줌

print(type(a))  

# / : 나누기

div = 3/4   # 0.75 (3.x버전에서는. 만약 2.x버전이라면 0으로 나옴- 정수*정수 연산이므로)
print(type(div))

# ** : 지수표현 (승)

result = 3 ** 4
print(result)

# % : 나머지 연산. R에서의 %%와 같음

result = 100%3  # 1
print(result)

# // : 몫

result = 10//3  #3
print(result)

2. Text Sequence 타입(str)

- 우리가 일반적으로 말하는 문자열

 

 

1) 문자열 생성 방법(4가지)

 

"", '' : 한줄짜리 문자열

a = "Hello"
b = 'Hello'  

 

""" """, ''' ''' : 여러줄 문자열 생성

c = """이것은 
소리없는
아우성"""    # 여러줄 주석인 """  """을 변수에 저장하면 문자열이 됨.
             # 해당 문자열은 줄바꿈을 포함할 수 있음

d = '''이것은
소리없는
아우성'''    # """ """과 동일하게 사용 가능

2) 문자열 연산, indexing, slicing

 

① + : 문자열 연결

first = "이것은"
last = "소리없는 아우성!"

result = first + last   # 연산자 overloading
print(result)

② * : 문자열의 곱

text="python"
print(text*3)  # text 3번 반복

 

③ indexing ( 0부터 시작 ) - 1개를 지칭

a = "This is a sample text! show me the money!"   # 문자열을 벡터라고 생각

print(a[4])   # 공백 
print(a[8])   # a
print(a[-1])   # -하면 뒤에서부터 시작. but 1부터 시작. -0은 없음

 

④ slicing ( 일부분을 발췌/대체 ) - 여러개를 지칭

a = "This is a sample text! show me the money!"

print(a[0:3])   # 0:2까지. 시작은 inclusive, 마지막은 exclusive
print(a[:4])    # 0:3까지 (아무것도 없으면 처음부터라는 뜻)
print(a[4:])    # 마지막 부분이 없으면 끝까지.
print(a[:])     # a의 처음부터 끝까지

3) in, not in 연산자 (R에서의 %in%) →  논리연산

a = "this is a Sample Text";

print("this" in a)   # True (TRUE X)
print("this" not in a)  # False
print("sample" in a)   # False -> 대소문자 구별
print("sample" in a.lower())  # True: a를 다 소문자로 바꾼 것에 sample이 들어있는지

4) 문자열 formatting

 

# 방식 1 → 너무 복잡

apple = 10
a = "사과가 "+str(apple)+"개 있어요!"   # 문자열+숫자 연산 X -> 같은 종류로 바꿔줘야함
print(a)  

# 방식2 - double

apple = 10
a = "사과가 %d개 있어요!!" %apple    # %d : 10진수를 의미. 숫자가 박힐 것 이라는 의미.  %100 이렇게 써도 됨
print(a)

# 방식2 - double (변수 2개일 때)

apple = 10
a = "사과가 %d개, 바나나가 %d개 있어요!!" %(apple,5)  
print(a)

# 방식2 - float

a = "원주율은 %f입니다." %3.141592    # f:float (실수를 의미)
print(a)

# 방식2 - string

a = "이것은 소리없는 %s!!" %"아우성"
print(a)

a = "이것은 소리없는 %10s!!" %"아우성"   # 문자열을 표현하는 데 문자열이 몇칸이든 상관없이 10칸 잡고, 오른쪽 정렬
print(a)

a = "이것은 소리없는 %-10s!!" %"아우성"  # 왼쪽 정렬
print(a)

a = "원주율은 %0.4f" %3.141592    # 반올림해서 소수점 4번째 자리까지 표현해라. (5번째 자리에서 반올림)
print(a)

a = "원주율은 %10.4f"  %3.141592  # 10은 아까처럼 f 자리에 10칸 할당. 오른쪽 정렬
print(a)

5) 문자열 함수

 

① len() : 문자열 길이

a = "cocacola"
result = len(a)    # R에서의 length
print(result)

 

x.count("a") : x에 있는 a의 개수를 세라.

result = a.count("co")
print(result)  

 

x.find("a") : x에 있는 a의 위치를 찾아라.

result = a.find("la")    # 찾은 곳의 index 번호를 알려줌/ 가장 앞의 결과만 나옴
print(result)

 

x.join(b) : b 사이사이에 x를 끼워넣는다.

a = ":"
b="abcd"
result = a.join(b)   # 두번째 있는거 사이사이에 첫번째 값을 밀어넣음.
print(result)

a = ["이것은","소리없는","아우성"]  # 이걸 한 칸씩 공백을 두고 붙이고 싶다.
b = " "
result= b.join(a); print(result)

 

x.upper() : 문자열 대문자로 

a = " hoBBy "
print(a.upper())   

 

x.lower() : 문자열 소문자로

print(a.lower())   

 

x.strip() : 앞뒤 공백 삭제

print(a.strip())   # 중간의 공백은 삭제 X

 

format() : 출력 양식 설정 

a = "나는 사과를 {0}개 가지고 있어요!".format("Three")    # 문자열도 가능. 어디에 나올 건지만 명시해줌.
print(a)

a = "나는 사과를 {0}개, 바나나를 {1}개 가지고 있어요!".format(3,5)   
print(a)

a = "나는 사과를 {}개, 바나나를 {}개 가지고 있어요!".format(3,5)    # 숫자를 안 써도 순서대로 mapping됨
a = "사과를 {var1}개, 바나나를 {var2}개 가지고 있어요!".format(var1=6,var2=12)  # 이렇게 쓸 수도 있으나 잘 사용 X

 

 

Comments