목차
변수와 상수
프로그램을 만들 때는 함수와 제어구조에서 사용할 값들을 사용할 수 있다. 이런 값은 변수와 상수로 나눌 수 있는데
- 변수 : 값이 바뀔 수 있는 값
- 상수 : 값이 바뀌지 않고 항상 고정 된 값
이렇게 나눠서 생각할 수 있다. 파이썬에서는 따로 상수임을 구분하지는 않아 상수도 변수값과 다르지 않게 사용하기 때문에 명시적으로 상수를 지정해서 쓸 수는 없지만 의도에 따라서 변수의 이름을 정해서 상수값을 활용할 수 있다.
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를 반환하도록 바꾸었더니 소스코드를 읽기가 훨씬 쉬워진다.
'아이티 > 파이썬' 카테고리의 다른 글
너무 쉬운 파이썬 강좌 6) 파이썬 기초 강좌 자료형(String Part II) (91) | 2023.12.01 |
---|---|
너무 쉬운 파이썬 강좌 5) 파이썬 기초 강좌 자료형(String Part I) (30) | 2023.11.25 |
너무 쉬운 파이썬 강좌 3) 파이썬 기초 강좌 연산자 (1) | 2023.11.19 |
너무 쉬운 파이썬 강좌 2) 파이썬 기초 강좌 인터프리터 컴파일러 차이 (1) | 2023.11.18 |
너무 쉬운 파이썬 강좌 1) 파이썬 설치하기 (2) | 2023.11.18 |