본문 바로가기
Programming

[파이썬] 자료형 변환

by 삼SAM 2022. 4. 27.

형 변환(Type Conversion / Type Casting)

데이터 타입을 변환하는 것

파이썬에서 제공하는 함수를 이용하여 자료형 변환이 가능

 

 

문자(열)로 형변환: str()

[예시1] 문자(열)로 형변환에 따른 출력 결과

a = 123
b = str(a)

c = 1.23
d = str(c)

e = True
f = str(e)

print("a의 출력 결과: {} / a의 자료형: {}".format(a, type(a)))
print("b의 출력 결과: {} / b의 자료형: {}".format(b, type(b)), "\n")
print("c의 출력 결과: {} / c의 자료형: {}".format(c, type(c)))
print("d의 출력 결과: {} / d의 자료형: {}".format(d, type(d)), "\n")
print("e의 출력 결과: {} / e의 자료형: {}".format(e, type(e)))
print("f의 출력 결과: {} / f의 자료형: {}".format(f, type(f)))
a의 출력 결과: 123 / a의 자료형: <class 'int'>
b의 출력 결과: 123 / b의 자료형: <class 'str'>

c의 출력 결과: 1.23 / c의 자료형: <class 'float'>
d의 출력 결과: 1.23 / d의 자료형: <class 'str'>

e의 출력 결과: True / e의 자료형: <class 'bool'>
f의 출력 결과: True / f의 자료형: <class 'str'>

 

[예시2] 문자(열)로 형변환에 따른 연산 결과

a = 123
b = str(a)

c = 4.56
d = str(c)

e = True
f = str(e)

print("a + a = ", a + a)        # int + int 는 덧셈 연산을 한다.
print("b + b = ", b + b, "\n")  # str + str 은 문자를 연속 출력한다.

print("c + c = ", c + c)        # float + float 은 덧셈 연산을 한다.
print("d + d = ", d + d, "\n")  # str + str 은 문자를 연속 출력한다.

print("b + d = ", b + d)        # str + str 은 문자를 연속 출력한다.
print("f + f = ", f + f)        # str + str 은 문자를 연속 출력한다.
a + a = 246
b + b = 123123

c + c = 9.12
d + d = 4.564.56

b + d = 1234.56
f + f = TrueTrue

* int + str 은 불가

* float + str 은 불가

* bool + str 은 불가

* 즉, 문자(str)는 다른 자료형과 "+" 연산 불가

 

 

 

정수로 형변환: int()

[예시3] 정수로 형변환에 따른 출력 결과

a = "11"
b = int(a)  # int의 형태를 가진 str은 int로 변환 가능

c = 11.99    # float은 int로 변환 가능. 단, 소수점 이하는 버림
d = int(c)

e = True    # True의 값은 숫자 "1"과 동일
f = int(e)  # bool의 형태는 int로 변환 가능

g = False   # False의 값은 숫자 "0"과 동일
h = int(g)  # bool의 형태는 int로 변환 가능

print("a의 출력 결과: {} / a의 자료형: {}".format(a, type(a)))
print("b의 출력 결과: {} / b의 자료형: {}".format(b, type(b)),"\n")

print("c의 출력 결과: {} / c의 자료형: {}".format(c, type(c)))
print("d의 출력 결과: {} / d의 자료형: {}".format(d, type(d)),"\n")

print("e의 출력 결과: {} / e의 자료형: {}".format(e, type(e)))
print("f의 출력 결과: {} / f의 자료형: {}".format(f, type(f)),"\n")

print("g의 출력 결과: {} / g의 자료형: {}".format(g, type(g)))
print("h의 출력 결과: {} / h의 자료형: {}".format(h, type(h)))
a의 출력 결과: 11 / a의 자료형: <class 'str'>
b의 출력 결과: 11 / b의 자료형: <class 'int'>

c의 출력 결과: 11.99 / c의 자료형: <class 'float'>
d의 출력 결과: 11 / d의 자료형: <class 'int'>

e의 출력 결과: True / e의 자료형: <class 'bool'>
f의 출력 결과: 1 / f의 자료형: <class 'int'>

g의 출력 결과: False / g의 자료형: <class 'bool'>
h의 출력 결과: 0 / h의 자료형: <class 'int'>

 

* 숫자가 아닌 문자열(str)은 정수형(int)으로 변환 불가

* str에 경우는 "11.00"처럼 소수점 이하자리가 0이어도 int로 변환 불가

 

 

[예시4] 정수로 형변환에 따른 연산 결과

a = "11"
b = int(a)

c = 22.0
d = int(c)

e = True
f = int(e)

print("a + a = ", a + a)        # str + str 은 문자를 연속 출력한다.
print("b + b = ", b + b, "\n")  # int + int 는 덧셈 연산을 한다.

# float + int 는 덧셈 연산을 하며 그 결과는 float이다.
print("b + c = {} / 연산 결과의 자료형: {}".format(b + c, type(b + c)))
print("c + d = {} / 연산 결과의 자료형: {}".format(c + d, type(c + d)), "\n")

# bool + int 는 덧셈 연산을 하며 그 결과는 int다.
print("e + b = {} / 연산 결과의 자료형: {}".format(e + b, type(e + b)))
print("e + f = {} / 연산 결과의 자료형: {}".format(e + f, type(e + f)))
a + a = 1111
b + b = 22

b + c = 33.0 / 연산 결과의 자료형: <class 'float'>
c + d = 44.0 / 연산 결과의 자료형: <class 'float'>

e + b = 12 / 연산 결과의 자료형: <class 'int'>
e + f = 2 / 연산 결과의 자료형: <class 'int'>

* int + str 은 불가

 

 

 

실수로 형변환: float()

[예시5] 실수로 형변환에 따른 출력 결과

a = "11"
b = float(a)  # 숫자 형태를 가진 str은 float으로 변환 가능

c = "22.00"   
d = float(c)  # 숫자 형태를 가진 str은 float으로 변환 가능

e = 33
f = float(e)  # int는 float으로 변환 가능  

g = True      # True의 값은 숫자 "1"과 동일
h = float(g)  # bool의 형태는 float으로 변환 가능

i = False     # False의 값은 숫자 "0"과 동일
j = float(i)  # bool의 형태는 float으로 변환 가능

print("a의 출력 결과: {} / a의 자료형: {}".format(a, type(a)))
print("b의 출력 결과: {} / b의 자료형: {}".format(b, type(b)),"\n")

print("c의 출력 결과: {} / c의 자료형: {}".format(c, type(c)))
print("d의 출력 결과: {} / d의 자료형: {}".format(d, type(d)),"\n")

print("e의 출력 결과: {} / e의 자료형: {}".format(e, type(e)))
print("f의 출력 결과: {} / f의 자료형: {}".format(f, type(f)),"\n")

print("g의 출력 결과: {} / g의 자료형: {}".format(g, type(g)))
print("h의 출력 결과: {} / h의 자료형: {}".format(h, type(h)),"\n")

print("i의 출력 결과: {} / i의 자료형: {}".format(i, type(i)))
print("j의 출력 결과: {} / j의 자료형: {}".format(j, type(j)))
a의 출력 결과: 11 / a의 자료형: <class 'str'>
b의 출력 결과: 11.0 / b의 자료형: <class 'float'>

c의 출력 결과: 22.00 / c의 자료형: <class 'str'>
d의 출력 결과: 22.0 / d의 자료형: <class 'float'>

e의 출력 결과: 33 / e의 자료형: <class 'int'>
f의 출력 결과: 33.0 / f의 자료형: <class 'float'>

g의 출력 결과: True / g의 자료형: <class 'bool'>
h의 출력 결과: 1.0 / h의 자료형: <class 'float'>

i의 출력 결과: False / i의 자료형: <class 'bool'>
j의 출력 결과: 0.0 / j의 자료형: <class 'float'>

 

 

[예시6] 실수로 형변환에 따른 연산 결과

a = "11.22"
b = float(a)

c = 33
d = float(c)

e = True
f = float(e)

print("a + a = ", a + a)        # str + str 은 문자를 연속 출력한다.
print("b + b = ", b + b, "\n")  # float + float 은 덧셈 연산을 한다.

# int + float 은 덧셈 연산을 하며 그 결과는 float이다.
print("c + b = {} / 연산 결과의 자료형: {}".format(c + b, type(c + b)))
print("c + d = {} / 연산 결과의 자료형: {}".format(c + d, type(c + d)), "\n")

# bool + float 은 덧셈 연산을 하며 그 결과는 float이다.
print("e + b = {} / 연산 결과의 자료형: {}".format(e + b, type(e + b)))
print("e + f = {} / 연산 결과의 자료형: {}".format(e + f, type(e + f)))
a + a = 11.2211.22
b + b = 22.44

c + b = 44.22 / 연산 결과의 자료형: <class 'float'>
c + d = 66.0 / 연산 결과의 자료형: <class 'float'>

e + b = 12.22 / 연산 결과의 자료형: <class 'float'>
e + f = 2.0 / 연산 결과의 자료형: <class 'float'>

* float + str 은 불가

* 숫자가 아닌 문자열(str)은 실수형(float)으로 변환 불가

* float은 항상 소수점 이하자리를 표기

 

 

 

논리형으로 형변환: bool()

[예시7] 논리형으로 형변환에 따른 출력 결과

a = 0       # int는 bool로 변환 가능
b = bool(a) # 숫자 0의 경우 False로 변환

c = 0.2     # float은 bool로 변환 가능
d = bool(c) # 0이 아닌 숫자는 True로 변환

# str은 bool로 변환 가능
e = ""
f = bool(e) # 아무것도 없는 str은 False로 변환

g = "False" # 내용에 상관없이 문자열이 있는 것으로 간주
h = bool(g) # 내용이 있는 str은 True로 변환

i = "0"     # str은 숫자가 아니므로 문자열이 있는 것으로 간주
j = bool(i) # 내용이 있는 str은 True로 변환

k = " "     # 공백문자(띄어쓰기 등) 역시 문자열이 있는 것으로 간주
l = bool(k) # 내용이 있는 str은 True로 변환

print("a의 출력 결과: {} / a의 자료형: {}".format(a, type(a)))
print("b의 출력 결과: {} / b의 자료형: {}".format(b, type(b)),"\n")

print("c의 출력 결과: {} / c의 자료형: {}".format(c, type(c)))
print("d의 출력 결과: {} / d의 자료형: {}".format(d, type(d)),"\n")

print("e의 출력 결과: {} / e의 자료형: {}".format(e, type(e)))
print("f의 출력 결과: {} / f의 자료형: {}".format(f, type(f)),"\n")

print("g의 출력 결과: {} / g의 자료형: {}".format(g, type(g)))
print("h의 출력 결과: {} / h의 자료형: {}".format(h, type(h)),"\n")

print("i의 출력 결과: {} / i의 자료형: {}".format(i, type(i)))
print("j의 출력 결과: {} / j의 자료형: {}".format(j, type(j)),"\n")

print("k의 출력 결과: {} / k의 자료형: {}".format(k, type(k)))
print("l의 출력 결과: {} / l의 자료형: {}".format(l, type(l)))
a의 출력 결과: 0 / a의 자료형: <class 'int'>
b의 출력 결과: False / b의 자료형: <class 'bool'>

c의 출력 결과: 0.2 / c의 자료형: <class 'float'>
d의 출력 결과: True / d의 자료형: <class 'bool'>

e의 출력 결과: / e의 자료형: <class 'str'>
f의 출력 결과: False / f의 자료형: <class 'bool'>

g의 출력 결과: False / g의 자료형: <class 'str'>
h의 출력 결과: True / h의 자료형: <class 'bool'>

i의 출력 결과: 0 / i의 자료형: <class 'str'>
j의 출력 결과: True / j의 자료형: <class 'bool'>

k의 출력 결과: / k의 자료형: <class 'str'>
l의 출력 결과: True / l의 자료형: <class 'bool'>

* 모든 자료형은 bool로 변환 가능

* True or False 를 규정하는 것은 데이터의 유(有) or 무(無)

 

 

[예시8] 논리형으로 형변환에 따른 연산 결과

a = 1
b = bool(a)

c = 0.00
d = bool(c)

e = True
f = False

# int + bool 혹은 int - bool 은 사칙 연산을 하며 그 결과는 int다.
print("a + e = {} / 연산 결과의 자료형: {}".format(a + e, type(a + e)))    
print("a - b = {} / 연산 결과의 자료형: {}".format(a - b, type(a - b)), "\n")

# float + bool 혹은 float - bool 은 사칙 연산을 하며 그 결과는 float이다.
print("c + e = {} / 연산 결과의 자료형: {}".format(c + e, type(c + e)))
print("c - d = {} / 연산 결과의 자료형: {}".format(c - d, type(c - d)), "\n")

# bool + bool 혹은 float - bool 은 사칙 연산을 하며 그 결과는 int다.
print("b + e = {} / 연산 결과의 자료형: {}".format(b + e, type(b + e)))
print("e - f = {} / 연산 결과의 자료형: {}".format(e - f, type(e - f)))
print("d - f = {} / 연산 결과의 자료형: {}".format(d - f, type(d - f)))
a + e = 2 / 연산 결과의 자료형: <class 'int'>
a - b = 0 / 연산 결과의 자료형: <class 'int'>

c + e = 1.0 / 연산 결과의 자료형: <class 'float'>
c - d = 0.0 / 연산 결과의 자료형: <class 'float'>

b + e = 2 / 연산 결과의 자료형: <class 'int'>
e - f = 1 / 연산 결과의 자료형: <class 'int'>
d - f = 0 / 연산 결과의 자료형: <class 'int'>

* bool + str 은 불가

'Programming' 카테고리의 다른 글

[파이썬] 조건문  (0) 2022.04.28
[파이썬] 연산자  (0) 2022.04.28
[파이썬] 자료형(Data Type)  (0) 2022.04.27
[파이썬] 변수  (0) 2022.04.27

댓글