프로그래밍을 할 때 우리는 많은 데이터를 처리하여야 하고, 데이터를 계속해서 사용하려면
어딘가에 저장을 해두고 사용하고 싶을 때마다 꺼내서 써야 한다.
이 데이터는 메모리에 저장이 되고, 데이터가 저장된 메모리 공간에 다시 접근해서 사용하기 위해서
우리는 "변수" 를 사용한다.
변수란 메모리 공간에 이름을 붙인다고 생각하면 된다.
weight = 78.2
예를 들어 자신의 몸무게를 저장해놓고, 프로그램 안에 bmi 를 구하는 등의 연산을 하기 위해
그 몸무게를 사용한다고 생각해보자.
그러면 우리는 weight 와 같은 이름의 변수를 만들고 거기다 78.2 라는 값을 저장할 수 있다.
이러한 것을 우리는 변수의 선언이라고 하고, 한 줄에 여러 개의 변수를 선언할 수도 있다.
weight, height = 78.2, 178
이런 식으로 선언하면 weight 변수에는 78.2 가, height 변수에는 178 이 저장된다.
한 번에 여러 개의 변수를 선언하고, 값을 할당하는 것을 "동시 할당문" 이라고 한다.
변수를 선언할 때 주의할 점이 있는데,
이미 예약된 단어는 사용할 수 없다. 예를 들어 return, True, for 등의 단어들이 그러하다.
변수에는 문자열도 저장할 수 있는데 문자열 데이터를 저장하는 것을 이해하기 위해선 객체에 대한 이해도 필요하다.
지금은 그냥 "변수에 문자열도 저장할 수 있다" 만 알고 넘어가도록 하자.
helloStr = "Hello World!"
helloStr 이라는 변수에 문자열을 저장했다.
파이썬은 미리 정의된 함수들을 제공하고 있어서 편하게 사용할 수 있다.
예를 들어, 문자열의 길이를 알고 싶을 때는 len() 이라는 함수를 사용하면 된다.
helloStr = "Hello World!"
length = len(helloStr)
print(length)
다음과 같이 코드를 작성하면 legnth 라는 변수에 helloStr 문자열의 길이인 12가 저장되고,
length 변수를 출력하면 12 가 출력됨을 확인할 수 있다.
다음과 같이 변수를 사용하면 여러가지 연산들을 할 때 저장된 값을 이용한다는 점이 편리한데,
체중과 키를 이용해 bmi 를 구하는 예제를 통해서 한 번 더 확인해보자.
height = 1.80
weight = 78.2
bmi = weight / height**2
print(bmi)
bmi 는 체중(kg)을 키(m)의 제곱으로 나누면 구할 수 있다.
코드를 살펴보면 height 변수에 키 정보를 담고, weight 변수에 몸무게 정보를 담는다.
height**2 는 height 변수의 값을 제곱한다는 뜻이고, '/' 연산자는 나누기를 진행한다.
결과적으로 bmi 변수에는 체중을 키의 제곱으로 나눈 값이 저장되고, print() 를 통해 bmi 값이 출력된다.
변수를 사용하는 이유가 한 가지 더 있다.
이런 식으로 bmi 를 계산하는 프로그램에서 체중이 바뀌었다고 해서 다시 프로그램을 만들 필요 없이,
체중에 해당하는 변수의 값만 바꿔주면 원하는 결과를 얻을 수 있다는 점이다.
그러면 1장에서 살펴본 터틀 그래픽과 변수를 이용해 원을 그리는 간단한 예제를 살펴보자.
터틀 그래픽에 대해서 모르겠다면 다음 페이지를 살펴보자.
터틀 그래픽에서 원을 그리기 위해서는 circle() 이라는 함수를 사용하면 된다.
괄호 안에 반지름 길이를 넣어주면 그 길이를 반지름으로 가지는 원을 그린다.
그렇다면 우리는 반지름의 길이에 해당하는 값을 변수에 저장해두고,
원의 크기를 바꾸고 싶을 때, 변수에 저장되어 있는 값만 변경해주면 된다.
import turtle
t = turtle.Turtle()
t.shape('turtle')
radius = 100
t.circle(radius)
radius = 200
t.circle(200)
turtle.done()
radius 라는 이름의 변수에 반지름 길이를 저장해두고,
100을 넣고 한 번, 200으로 값을 변경하고 한 번 원을 그린다.
이 코드를 실행하면 다음과 같은 결과를 얻을 수 있다.
그렇다면 이제 변수의 "자료형"에 대해서 얘기를 해보자.
자료형이란 "프로그램에서 사용할 수 있는 데이터의 종류"를 말한다.
예를 들면 1이나 2 같은 수는 정수(Integer), 3.14 같은 수는 실수(Floating-point),
'Hello World' 와 같은 문자열 등이 있다.
각각의 자료형마다 데이터가 메모리에 저장될 때 차지하는 공간의 크기도 다르고,
연산할 때 작동하는 방식도 다르기 때문에 이 자료형을 잘못 지정하면 오류가 나게 된다.
다른 프로그래밍 언어인 C언어, JAVA 에선 변수의 자료형을 지정해준다.
하지만 파이썬에서는 자료형을 지정하지 않아도 알아서 자료형을 결정해준다.
예를 들어 C 언어에서 정수형 데이터를 저장하기 위해서는
int num = 1;
이와 같이 int 라는 키워드를 변수 앞에 입력해 자료형을 지정해주는 반면
파이썬은 "변수명 = 정수 데이터" 만 적어도 정수형으로 인식하여 저장한다.
또한 위 C코드에서 선언된 num 변수에는 다른 자료형의 데이터를 담을 수 없지만,
파이썬에서는 변수 안에 어떤 종류의 자료를 저장해도 된다.
num = 1 #정수 1 저장
num = 3.14 #실수 3.14 저장
위 코드는 정수 데이터를 저장하였다가 나중에 실수 데이터를 저장하는 모습이다.
현재 변수가 어떤 자료형인지 알기 위해서는 type() 이라는 함수를 적용하면 된다.
weight = 78.2
print(type(weight))
위와 같이 weight 변수에 실수형 데이터를 담고 type(weight) 를 호출한다.
그리고 호출결과를 print 하면
다음과 같이 'float' 라고 알려준다.
float 는 실수를 의미한다.
이제 자료형에 대해서도 알아봤으니,
사용자로부터 정수형, 문자열 데이터를 입력받는 프로그램을 한 번 만들어보자.
사용자에게서 데이터를 입력받기 위해서는 input() 이라는 함수를 사용하면 된다.
input() 함수는 사용자의 입력을 문자열 형태로 반환한다.
사용하는 방법은 아래 코드와 같다.
inputString = input('문자열을 입력하세요 : ')
input() 괄호 안에 문자열을 넣을 수 있는데 괄호 안의 문자열은 화면에 출력되고,
사용자의 입력을 기다리는 상태가 된다.
이후 사용자가 입력을 하고 엔터키를 누르면, input() 함수는 입력한 문자들을 하나의 문자열로 만들어 반환한다.
위 코드를 확인하면 문자열을 input() 함수를 이용해 이름을 입력받고,
입력받은 이름을 출력하고 있음을 알 수 있다.
그렇다면 정수를 입력받으려면 어떻게 하면 될까?
input() 함수를 이용해 입력받은 값은 문자열이라고 언급했는데, 이 문자열을 정수로 바꿔주면 된다.
정수로 자료형을 바꿔주려면 아래 코드와 같이 int() 를 이용하면 된다.
num = int(input('숫자를 입력하세요 : '))
input() 함수를 이용해 입력받은 값이 문자열로 반환되는데, 그것을 int() 로 감싸주면
문자열이 정수로 반환된다.
그렇다면 이것을 종합해 현재온도(섭씨온도)를 사용자로부터 입력받고,
섭씨온도를 화씨온도로 바꾸는 프로그램을 만들어보자.
(섭씨온도를 화씨온도로 바꾸는 식은 다음과 같다. 화씨온도 = 9/5 X 섭씨온도 + 32)
cel = int(input('섭씨온도를 입력하세요 : '))
fah = (9/5) * cel + 32
print('섭씨 ', cel, ' 도는 화씨 ', fah, ' 도 입니다.')
섭씨온도를 입력받아 정수형으로 바꾸고 연산들을 통해 화씨온도로 바꾸는 모습이다.
우선, 사용자로부터 값을 입력받고 그것을 연산하고 출력한다는 점이 중요하다.
여기서 곱하기나 나누기 등의 연산이 사용되는데, 연산자는 다음 장에서 더 알아보기로 하자.
이번 장을 공부하면서 느낀 점은 다른 언어에서는 변수의 자료형을 명시해줘야 하고
한 번 선언한 자료형의 변수에 다른 자료형은 담을 수 없어서 불편한 것이 많았는데,
파이썬은 그러한 불편함이 없어서 더욱 활용하기에 간편한 점이었다.
아직은 어렵지 않은 단계이지만 여러 데이터를 다루고 처리하는 부분으로 넘어갈 수록 어렵게 다가올 수 있다.
포기하지 않고 끝까지 공부해보자 :)
출처 : 따라하며 배우는 파이썬과 데이터 과학 - 천인국, 박동규, 강영민