본문 바로가기
아이티/파이썬

너무 쉬운 파이썬 강좌 4) 파이썬 기초 강좌 자료형(int, float, bool)

by 베베슈슈 2023. 11. 24.

파이썬 기초강좌 자료형
파이썬 기초강좌 자료형

목차

    변수와 상수

    프로그램을 만들 때는 함수와 제어구조에서 사용할 값들을 사용할 수 있다. 이런 값은 변수와 상수로 나눌 수 있는데

    • 변수 : 값이 바뀔 수 있는 값
    • 상수 : 값이 바뀌지 않고 항상 고정 된 값

    이렇게 나눠서 생각할 수 있다. 파이썬에서는 따로 상수임을 구분하지는 않아 상수도 변수값과 다르지 않게 사용하기 때문에 명시적으로 상수를 지정해서 쓸 수는 없지만 의도에 따라서 변수의 이름을 정해서 상수값을 활용할 수 있다.

    nInput = 0
    MAX_VALUE = 100
    
    print("값을 입력하세요 :")
    nInput = int(input())
    
    if nInput > MAX_VALUE :
        nInput = MAX_VALUE
    
    print(nInput)

     

    위의 예제에서는 MAX_VALUE라는 값을 대문자로 써서 상수항임을 표현했다. nInput이라는 변수에 입력할 수 있는 최대값을 100으로 지정해서 최대치를 초과하는 값을 입력받으면 nInput을 100으로 지정하는 예제이다. 위의 예제처럼 상수값은 일종의 설정값을 나타낼 때 주로 사용된다. 

     

    정수형 변수(int)

    정수는 양의 정수, 0, 음의 정수를 표현하는데 사용하는 자료형이다. 말 그대로 정수이기 때문에 소수점 이하가 표시되지 않는다. 

    fValue = 8/5
    print(fValue)
    
    nValue = int(8/5)
    print(nValue)

     

    위의 예제를 실행해보면 첫 번째 값은 8/5를 해서 1.6이 표시되고 두 번째 값은 소수점의 앞부분인 1만 표시 된다. 파이썬은 자료형을 명시적으로 설정하지 않고 자동으로 자료형 변환이 되기 때문에 변수에 할당되는 값에 따라서 자료형이 정해진다. 두 번째 예시에서는 8/5를 int형으로 강제로 변환을 해 명시적으로 정수형이 되도록 하였다.

    진수 표현

    10진수 외에 2진수, 8진수, 16진수의 표현도 쉽게 가능하다. 

    binary_number = 0b1010  # 10진수 10을 2진수로 표현
    octal_number = 0o12    # 10진수 10을 8진수로 표현
    hex_number = 0xA       # 10진수 10을 16진수로 표현
    
    print(binary_number, octal_number, hex_number)	#10 10 10으로 표시 된다.
    
    decimal_number = 10
    print(bin(decimal_number), oct(decimal_number), hex(decimal_number))	#0b1010 0o12 0xa

     

    위의 예제는 진수를 표현하는 예제로 정수형 변수에 값을 입력할 때는 여러 형태로 넣을 수 있지만 출력해 보면 모두 10진수로 표시되는 것을 볼 수 있다. 10진수를 다른 진수의 형태로 변환하기 위해서는 bin(), oct(), hex() 함수를 이용해서 진수변환을 할 수 있다.

     

    부동소수형(float)

    부동소수(float)형은 소수점을 나타낼 수 있는 변수형이다. 사용방법은 정수형과 같아 사용할 때 헷갈릴 수 있다. 정수형과 이름이 헷갈리지 않기 위해 변수의 이름을 정할 때 정수형은 n_Name, 부동소수형은 f_Name의 형태로 어떤 타입의 변수를 쓸 건지 정해두면 혼동을 막을 수 있다.

     

    f_height = 177		#키 177cm
    f_weight = 68.5		#몸무게 68.5kg
    
    f_bmi = f_weight / ((f_height/100) ** 2)
    print("BMI:", f_bmi)

     

    소수점을 활용한 예제로 변수명인 height, weight, bmi의 앞에 f_라고 써서 변수형임을 표시해 보았다. 파이썬의 부동소수점은 표현할 수 있는 한계까지 표현하면 반올림 과정에서 끝자리가 이상하게 표시된다.

    result = float(10/3)
    print(result)
    #3.3333333333333335 소수점의 제일 끝이 3이나 4가 아닌 5로 표시

     

    정밀한 값을 계산하여야 하는 경우라면 부동소수점을 사용하였을 때 생기는 오류도 감안해 자릿수를 제한할 필요가 있다. 

    화면에 표시할 경우 자릿수를 제한하려면 format을 이용해서 자리수를 표시할 수 있다. 

    result = float(10/3)
    print(f"{result:.3f}")
    
    #3.333 으로 소수점 이하 세자리만 표시 된다.

     

    부울형(bool)

    bool형은 참(True), 거짓(False)을 나타내는 자료형으로 주로 제어구문에서 사용된다. C의 경우는 1과 0으로도 표시되는데 1은 True, 0은 False를 나타낸다. 이전에 소개 한 연산자 챕터의 논리연산자(and, or, not)에서 bool형이 소개된 적이 있었다.

    x = 3
    y = 5
    print(x > 4 and y > 2) 
    #결과: False - y > 2는 참이지만, x > 4는 거짓이기 때문에 False를 반환했다.
    print(x > 4 or y > 2)
    #결과: True - x > 4가 참으로, 하나라도 참이기 때문에 True를 반환했다.
    print(not x < 5)
    #결과: False - x < 5라는 조건문이 참이기 때문에 결과를 반대로 뒤집어 False를 반환했다.

     

    bool형의 경우는 가독성을 높이기 위해서 사용하기도 한다. 짝수를 구하는 함수를 만든다고 생각해보자.

    def is_even(num):
    	result = num % 2
    	return result
    
    print("값을 입력하세요:")
    input_num = int(input())
    
    ret = is_even(input_num)
    
    if ret == 1 :
    	print("입력한 값은 홀수 입니다.")
    else:
    	print("입력한 값은 짝수 입니다.")

     

    is_even은 입력받은 값을 모듈러연산자로 나머지를 구해서 리턴하는 함수이다.

    입력 받은 값을 is_even을 통해 결과값을 받아 ret에 할당했다. 

    나머지가 1이면 입력한 값은 홀수이고 그렇지 않다면(0이라면) 입력한 값은 짝수라고 표시해 준다.

    함수의 이름은 is_even이지만 리턴되는 값이 나머지이다 보니 함수의 이름과 출력되는 값이 모호하다는 것을 알 수 있다. 짧은 코드이기 때문에 크게 문제가 되지 않지만 코드의 길이가 길어지다 보면 가독성 문제로 함수를 잘 못 사용하게 될 수도 있다.

    def is_even(num):
    	result = num % 2
    	return result == 0
    
    print("값을 입력하세요:")
    input_num = int(input())
    
    ret = is_even(input_num)
    
    if ret == True :
    	print("입력한 값은 짝수 입니다.")
    else:
    	print("입력한 값은 홀수 입니다.")

     

    이번에는 is_even이 bool 형의 자료를 반환하도록 변경해 보았다. 짝수를 넣으면 True를 홀수를 넣으면 False를 반환하도록 바꾸었더니 소스코드를 읽기가 훨씬 쉬워진다.