본문 바로가기
SK 행복성장캠퍼스/Python 기초

0831_1일차_Python06_기본형데이터_형변환

by NickNuma 2020. 9. 2.

음.... 형변환...
엄청 뭐가 많은데... 지저분하게 많아서.... 좀 생각을 하다 왔습니다.

일단 그냥 올려보겠습니다.


 


일단 형변환이라는 것은 데이터형을 변환하는 것을 말합니다.
ex) 정수형 int 값 -> 실수형 float 값
형변환은 형변환할 데이터형 float(형변환될 데이터)를 하면 됩니다.
float(int형 데이터 혹은 변수명)      <<<--- int형 데이터를 float형으로 변환

"""
    데이터 형변환

        가. 기본형 데이터 변환
            int(값)   ==> 데이터 값을 정수형으로 변환
            float(값) ==> 데이터 값을 실수형으로 변환
            bool(값)  ==> 데이터 값을 논리으로 변환

        나. 집합형 데이터 변환
            str(값)   ==> 데이터 값을 문자열로 변환
            list(값)  ==> 데이터 값을 리스트로 변환
            tuple(값) ==> 데이터 값을 튜플로 변환
            set(값)   ==> 데이터 값을 셋으로 변환
            dict(값)  ==> 데이터 값을 딕셔너리로 변환

"""

문자열 데이터를 정수형 데이터와 더할 수 없고, 실수형 데이터를 정수형 데이터와 더할 수 없기때문에 형변환은 필요합니다.
"123" + 1 ==> Error                int("123") + 1  ===> 124

# 1. int로 형변환
print(int(3.14) + 1)    # float
print(int("123") + 1)   # string
print(int(False))       # False = 0
print(int(True))        # True = 1
print("="*40)

# 2. float로 형변환
print(float(3) + 1)         # int
print(float("123.4") + 1)   # string
print(float(False))         # False = 0.0
print(float(True))          # True = 1.0
print("="*40)

# 3. str으로 형변환
print(str(10))          # int
print(str(3.14))        # float
print(str(False))       # False = 0
print(str(True))        # True = 1
print("="*40)

위의 코드의 실행 결과입니다.


 


형변환도 중요하지만
bool 데이터 형변환을 이야기하면서 가장 중요한 것은
python의 논리값은 True와 False만 사용되는 것이 아니라는 것입니다.

python의 논리값은 
정수형 0, 빈 문자열 " ", Null 값 None, 빈 리스트 [], 빈 딕셔너리 { } 값 역시 False로 처리됩니다.
그리고 위의 5가지를 제외한 모든 값True로 처리됩니다. 매우 중요합니다.

# 4. bool로 형변환
"""
    **** Python의 논리값은 True / False 만 사용되지 않는다.
            => 기본 / 집합형 데이터도 논리값으로 사용 가능하다. ****    java는 True / False만 가능
    
    **** 매우 중요***
    False로 처리되는 값 : 0, "" (빈 문자열), None, [] 빈 리스트, {} 빈 딕셔너리*
    
    
    True로 처리되는 값 : 위의 5가지를 제외한 모든 값
        ex) 10, "a", [10, 10, 30], {key : value}
"""
# 가. False로 처리되는 데이터
print(bool(0))
print(bool(""))
print(bool(None))
print(bool([]))
print(bool({}))
print("="*40)

# 나. True로 처리되는 데이터
print(bool(10))
print(bool("오"))
print(bool(not None))
print(bool([10, 10, 20]))
print(bool({"age":25}))
print("="*40)

위 코드의 실행 결과입니다.


 



하하하. 쨋든 
형변환을 하지 않고 처리하려하면 데이터형이 일치하지 않아 에러가 나올 수 있다는 점 역시 중요합니다.

# 적용 사례 (*****)
#1. "123" --> 123       ## 연산을 위해 str을 int로 형변환
s2 = "123"
# print(s +10)  # 에러 코드, string 값 + integer => 불가능

print ("s2(123) + 10 = ", int(s2) + 10)
print("="*40)


#2. 123 ---> "123"      ## 문자열 간에 합성을 위해 형변환
s3 = 123
# print(n + "값")    # 에러 코드
print(str(s3) + "값")

위 코드의 실행결과입니다.



형변환을 하지 않고 처리하면 오류가 날 수 있다.
처리 전엔 형변환이 필요.

0,   "" (빈 문자열),   None,   [] 빈 리스트,   {} 빈 딕셔너리는 False와 함께 논리형 bool 데이터에서 False값을 만든다.
(나머지는 True 값)

이 중요합니다.

이쯤해서 빠르게 종료하겠습니다~
할게 많아서요~~ ㅎㅎ.

이렇게~ 3일째에 1일차를 끝냈습니다~~ 다행이면서.. 내일 또 4일차가 생길 것을 생각하니 머리가......

쨋든... 고롬 이만~~

반응형

댓글