3.3 변수 (Variable)
Last updated
Last updated
우리는 엔트리 블록코딩에서 변수와 리스트라 불리는 것을 사용해봤다. 둘 다 데이터를 담는 저장공간이었다. 그중에서 먼저 변수는 무엇이며 그 목적은 무엇이었는지를 상기해 보자. 변수는 그 이름 그대로 고정되지 않은 변화하는 값을 임시로 보관해 놓을 공간과 같은 것이다. 우리는 블록코딩에서 어떠한 블록을 사용할 때, 대부분의 블록은 특정한 사전에 정의된 어떤 행동을 유도하기 위해 그에 맞는 고정된 값을 지정해 사용하는게 일반적이다. 하지만, 미리 특정할 수 없는 값들, 예를 들어 사용자로부터 임의로 입력된 값에 기반에 어떤 행동을 하게 만드는 프로그램의 경우도 변수를 사용해야 한다.
방금 언급된 사례인 사용자로부터의 임의의 두 개의 숫자를 받아드려서 합을 구해주는 덧셈만 가능한 아주 간단한 덧셈전용 계산기 프로그램을 변수를 사용해 코딩해보자.
아직 우리가 텍스트코딩에 익숙지 않아서 갑자기 코드량이 많아진 느낌이 들 순 있지만, 사실은 일부러 코딩할 때 공백라인으로 코드 덩어리를 의미있게 구분해 가독성을 높여놓은 코드라 라인 수가 길어진 느낌은 있지만 차근히 해석해보면 복잡한 내용은 거의 없다는 것을 알 수 있다.
그동안 배우지 않았던 첫 등장하는 부분은 5~6라인까지의 3라인에 걸쳐 작성한 코드로, first, second, result라고 이름지은 변수를 3개 선언하고 그 변수값의 초기값(맨 처음 생성하면서 부여한 값)으로 각각에 0을 넣어놓은 것이다. 변수를 만드는 파이썬 문법은 다음과 같다.
여기서 변수명은 내가 필요한 임의의 이름을 부여하되 그러나 가능하면 의미있게 부여해서 코드를 읽었을 때 쉽게 사용목적을 파악하도록 하는게 잘 이름짓는 방법이다. 위의 예제에서는 사용자의 첫 입력값(first), 두번째 입력값(second), 그리고, 두 값을 더한 결과값(result)이란 의미를 부여하기 위해 저러한 변수명을 의도적으로 사용했고, 변수값에 처음 생성하면서 동시에 어떤 임의의 값(이를 초기값이라 부름)을 할당해 값을 가진상태에서 출발되도록 한다. 보통 일반적으로 0 을 초기값으로 사용한다. 해당 문법에서 주의해야 할 것이 하나 있는데 '=' 이라는 기호의 의미는 우리가 수학에서 의미했는 '값이 같다' 라는 의미가 아니라, '=' 를 중심으로 오른쪽에 있는 값을 왼쪽에 할당한다는 의미라는 것을 반드시 기억해야 한다.
변수명은 임의로 사용할 수 있다고는 했으나, 사실은 파이썬에서 변수이름을 지을 때, 크게 지켜야 할 2가지 규칙은 있다.
변수의 이름은 숫자로 시작할 수 없다.
변수의 이름 사이에 공백이 있을 수 없다.
여기서, 참고로 좌우의 값이 값냐라는 수학적 의미를 코딩으로 표현하려면 어떤 기호를 써야하는지 궁금할 수 있는데 이 때는 '==' 기호로 표현하는데 이렇게 '='기호를 한번이 아닌 연달아 두번을 사용해야만 좌우의 값이 서로 같은지 여부의 비교의 의미가 된다.
우리가 블록코딩에서 이미 변수를 사용해 봤다면, 그 의미와 용도를 잘 알고 있을 것이고 텍스트코딩으로 넘어오더라도 그 의미와 목적이 달라지는 건 전혀없고, 다만 텍스트코딩에서 사용할 때 사용하는 텍스트코딩용 언어(여기서는 파이썬)에 맞는 변수사용 문법을 따라 사용하면 되는 것이다.
따라서, 5번라인의 first = 0 이라는 코드는 '='의 왼쪽에 위치한 first라는 변수에 '='의 오른쪽에 위치한 0 값을 저장한다 라는 의미가 되는 것이다.
10~11번 라인 코드덩어리는 프로그램에서 사용자에게 우리 프로그램은 어떤 프로그램임을 알리기 위한 설명을 전달하는 목적으로 10번 라인의 (화면)출력함수는 이미 사용해 보았고, 11번 라인에 Entry.wait_for_sec(2) 코드는 처음 등장했는데, 의미해석은 어렵지 않은데 Entry라이브러리 안에 있는 wait_for_sec함수를 호출해 사용한 건데, 용도는 블록코딩에서의 "~초 기다리기" 블록과 동일한 것으로, 몇 초 기다릴지의 값을 함수로 넘겨주여야 하고, 여기서는 이전 10번 라인에서 출력했던 말을 2초간 화면에 유지하며 기다리게 하기 위해 숫자 2 값을 함수로 넘겨주었다.
13~16번 라인의 코드덩어리는 사용자로부터의 임의의 두 수를 차례차례 입력받아 각각의 두 변수(first, second)에 저장해 두는 것이고, 이 때 왜 사용자 입력값을 Entry.answer()를 통해 값을 읽어 저장해야 하는지는 이전 장 입출력 함수 부분에서 설명하였다.
18번 라인에서는 두 변수(first, second)에 저장된 값을 읽어 서로 더한 결과를 세 번째 변수인 result에 저장해 두는 것이다.
19번 라인에서는 사용자가 입력한 두 수의 합계가 저장되어 있는 변수 안에 값을 사용자에게 보여줌으로써 프로그램의 목적을 달성하며 끝이난다.