형 변환(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 |
댓글