변수던 상수던 그 외의 무엇인가이던가, 프로그래밍에서 사용되는 무수한 자료에는 자료형 이라는게 존재한다.

흔히 볼 수 있는 자료형으로는 정수 / 실수 / 문자 등이 있고 우선 이 자료형들을 알아보자.

 

 

기본 자료형

정수(Integer, Int) : 소수점을 사용하지 않는 n진 상수 (ex : 0,-12,15,0xfe 등)
실수(float) : 부동 / 고정 소수점을 사용하는 상수 (ex : 3e-2, 0.774 등)
문자(str) : 큰따옴표(") 혹은 작은따옴표로 둘러싸인 고정 수(ex : "asdf","23","BB")(리터럴이라고 한다.)

 

같은 타입의 자료형은 연산이 가능하다.

>> a=3
>> b=7
>> my_str = "10"

>> print(a+b)
10

>> print(my_str+a)
## 오류 발생! my_str은 문자이고 a는 정수이다

그럼 여기서 my_str을 정수 10으로 만들 수 있는 방법은 무엇이 있을까? 다행이도 Python을 포함한 대부분의 프로그래밍 언어는 Casting을 통해서 이를 해결한다.

Casting : 변수를 다른 형태로 변환하는 것
>> a=3
>> b=7
>> my_str = "10"

>> print(a+b)
10

>> my_str = int(my_str)
## int()를 이용해서 이제 my_str은 "10"이 아닌 10이 된다. 

>> print(my_str+a)
13

* 상수나 실수를 문자열로 캐스팅하는것도 가능하다(str(a)를 하면 결과는 "3"이다.)

* 실수를 정수로 강제 캐스팅하면 소수점은 강제로 짤린다.

 


이번시간은 자료형과 형변환에 대하여 알아보았다. 다음시간에는 Python 자료형인 LIST에 대해서 알아보도록 하자

변수란

변수(variable)는 컴퓨터 프로그래밍에서 아직 알려지지 않거나 어느 정도까지만 알려져 있는 양이나 정보에 대한 상징적인 이름이다.

 

프로그래밍에서 변수의 정의는 위와 같다. <변하는 값>이라고도 말할 수 있으며, 사실상 코드는 작성하면서 사용하게 될 상수를 제외한 모든 값들을 변수라고 보면 좋을 거 같다.

 

예를 들어 '어떠한 값의 3을 더하는 프로그램을 만드시오' 라는 과제가 있으면, 이 어떠한 값은 정해지지 않은 것이니, 변하는 값 즉 변수라는 것을 알 수 있다. 그러면 Python의 변수는 어떻게 만들고, 사용할 수 있을까?

 

 

변수의 정의와 사용

 

우선은 어떠한 값을 담고 있는 변수의 이름부터 지어주어야한다. 이름을 짓는 데는 다음과 같은 규칙이 사용된다.

변수의 이름은 영어, 숫자, 언더바로만 구성된다.(단 숫자와 언더바는 영어와 조합하여야 한다.)

즉 a, _REDUCTO, ABC_123 등이 가능한 변수의 이름이 된다. 

 

또한 Python에서 변수는 다른 프로그래밍 언어에서 보면 생성과 동시에 초기화(initialize)된다. 풀어 설명하면 변수의 이름이 생성되는 동시에 특정한 값을 할당받는다는 것을 의미한다. 아래는 변수의 정의의 예시이다.

>> a = -3

>> _REDUCTO = "ddd"
## Python에서 변수는 어떠한 형태도 담을 수 있다

>> ABC_123 = _REDUCTO
## 위와같은 이유로 변수에 다른 변수를 담는것도 허용된다.

 * ##는 주석(Comment)을 의미한다. 주석은 프로그램 동작에 포함이 되지 않는 프로그래머의 설명문으로 코드의 생성일, 저작권, 사용법 등이 적힌다. 주석에 대한 자세한 내용은 추후 포스팅하겠습니다.

 

이렇게 변수를 정의했으면 우리는 변수를 사용할 수 있다. 앞서 사용했던 print("Hello World")의 "Hello Worlds"(정해진 상수)를 우리 변수로 바꾸어 작성해보자

>> print(a)
-3

>> print(_REDUCTO)
"ddd"

>> print(ABC_123)
"ddd"

 

사칙연산

 

Python은 다양한 사칙연산을 지원한다. 전 글에서 보았던 간단한 +,-,/,* 뿐만 아니라 다음과 같은 연산자를 지원한다.

연산자 설명 예시
+ 더하기 10+3 = 13
- 빼기 10-3 = 7
* 곱하기 10*3 =30
/ 나누기 10/3 = 3.33...
% 나머지 10%3 = 1
** 제곱 10**3 = 1000
// 10//3 = 3

다음과 같은 코드를 통해서 사칙연산을 조금 더 깊게 알아보자. 바로 위의 변수의 내용까지 담고 있으니, 직접 코딩해보는 것을 추천한다.

>> a=3
>> b=5
>> c=a*b
## 여기서 a=3, b=5, c=15가 된다.

>> print(a+b)
8

>> print(c*b+a)
78

>> a = a+3
## 여기서 a는 기존 a에 3이 더해진 6이 된다.

마지막 a=a+3을 보자. 수학에서 "="은 같다를 의미하지만, 프로그래밍 세상에서 =은 대입을 의미한다.

무심코 사용했던 a=3이나 b=5도 각각 a에 3을 대입한다. b에 5를 대입한다의 의미를 가지고 있는 것이다.

이 대입에는 규칙이 있는데 항상 "오른쪽을 왼쪽에 대입한다." 즉 a=a+3 은 기존 a에 3 더한 값을 새로 a에 대입한다는 의미를 가진다. 대부분의 프로그래밍 언어는 이렇게 기존의 값을 쉽게 바꾸는 연산자를 제공한다. 바로 +=, -=, *=, /=이다, a+=3 은 a = a+3과 같은 의미, b-=9는 b = b-9와 같은 의미를 가진다. 

 

독특한점은 문자열에 대해서 "+"와 "*"연산이 동작한다는 점이다. 다음의 코드를 보자

>> a = "AAA"
>> a = a+"BBB"
>> print(a)
"AAABBB"

>> a = "ABC"
>> a = a*3
>> print(a)
"ABCABCABC"

 

비교 연산 

비교 연산은 두 수의 크기, 같음과 다름 여부를 계산해주는 연산자로 참(True)과 거짓(False)을 판단한다.

연산자 설명 조건 결과
>, >= 크거나 (같음) 3>5 False
<, <= 작거나 (같음) -1<4 True
== 같음 3+7==10 True
!= 다름 "aaa"!="aab" True

*==의 조건과 결과로 "사칙연산을 비교 연산보다 우선한다"는 것을 알 수 있다.

 

비교 연산은 논리 연산과 같이 사용되는 경우가 많다, Python에서 AND의 연산자는 and이고, OR의 연산자는 or, 같음의 연산자는 is, 다름의 연산자는 not 등이 쓰인다.

* 위 연산의 설명의 자세한 건 논리와 이산수학 부분에 포스팅 예정이니 모르는 사람은 구글링, 포스팅을 확인하고 오는 것이 좋다.(굉장히 중요한 내용이다!) 

 


이렇게 Python에서 변수의 정의와 사용, 연산의 종류인 사칙연산과 비교 연산에 대해 알아보았다. 이외에도 비트 연산 등이 추가로 사용되나, 사실 비트 연산이 사용되는 경우는 위 연산들에 비하면 적을 뿐 아니라 이해에 논리 연산의 이해가 필요하니 사용하게 될 때 자세한 설명을 하도록 하겠다.

 

 

이렇게 Python에서 변수의 정의와 사용, 연산의 종류인 사칙연산과 비교연산에 대해 알아 보았다. 이외에도 비트연산등이 추가로 사용되나, 사실 비트연산이 사용되는 경우는 위 연산들에 비하면 적을뿐아니라, 이해에는 논리연산의 이해가 필요하니 사용하게 될 때 자세한 설명을 하도록 하겠다. 다음 시간에는 기본자료형과 형변환을 알아보도록 하겠다.

자! Python세계에 온것을 환영한다. 우선 이 Python이라는 놈이 어떤 생태환경을 가지고 있는지 관찰해보도록하자 

 

우리의 첫번째 코드는 

>> print("Hello World")

이다. Python은 다음과 같은 코드를 입력하면 

>> print("Hello World")
Hello World!

와 같은 결과를 줄것이다.

 

이 한줄이 의미하는 것은 간단하다. 

Hello World를 출력해라!

가령 Hello World말고 좋아하는 글자를 써서 넣을 수 있을 것이다. 예를 들면 

>> print("퇴근!")
퇴근!

이 될 수도 있다. 

 

다른 일은 어떤 걸 할 수 있을까? 컴퓨터니까 우리의 귀찮은 계산을 대신해주었으면 하는 바람이 있다.

(* 아직 우리의 Python은 그다지 똑똑하지 못한 주인을 가지고 있기에 사칙연산을 대신 시켜보도록 하자)

>> 3+5
8

>> 10/2
5

>> 5*2+3
13

>> (7-4)*2
6

우리의 Python은 역시 똑똑하다 

 

Python과 친해지는 방법은 여러가지를 써보는 것이다. C언어의 창시자인 우리의 메시아 데니스 리치는 프로그래밍언어에 익숙해지는 가장 효율적인 방법은 그것으로 프로그램을 만드는 것이라고 했다. Python과 익숙해 지는 가장 좋은 방법은 역시 Python을 오랜시간들여 관찰하고 같이 여러가지를 해보는 것이다. 다음시간에는 변수와 사칙연산으로 Python과 더욱 친해져 보도록 하자

농사를 지으려면 땅이 있어야 하고, 그림을 그리려면 캔버스가 있어야 한다.
무슨 소리냐.

-- Python을 시작하려면 Python을 작성할 수 있는 개발도구가 있어야 한다. --

프로그램도 자신의 맞는 환경이 존재해서 정확한 프로그램을 설치하기 위해서는 자신의 단말기 정보를 알아야 한다.
크게 ①운영체제와 ②아키텍처를 알아야 하는데, 자신의 운영체제와 버전을 확인하는 방법은 다음과 같다.

① Window 아키텍처 확인방법

실행창([윈도우]+[R]) - msinfo32 - [OS이름, 시스템 종류 확인]

*여기서 시스템 종류가 X86인 경우 32버전, X64인경우 64버전이다.

* 리눅스의 경우에는 Python이 내장되어 있으며, Mac은 내가 쓸 줄 모른다....(단말기도 없고 VM에 설치할 의지도 없다.)

여기까지 되었다면 우리의 Python 개발도구를 만나러 갈 시간이다. 가장 간단한 IDLE의 설치 방법을 포스팅할 것이다. 이 글 마지막 부분에 다른 추천 개발도구 또한 설치 링크를 적어두었으니, IDLE이 마음에 들지 않거나, 추가적인 기능이 필요한 경우 다른 도구를 설치하자

※ IDLE 이란? ※

IDLE - Python으로 개발된 개발도구이다. Python을 설치할 때 내장되어있으며, 필자는 다른 도구는 무거워서 단순한 프로그램은 이것으로 개발한다.

※ IDLE 설치방법 ※

1. 다음 위 설치 링크의 Python공식 홈페이지의 다운로드 화면으로 이동, Download Python 3.9.3을 눌러서 Python setup를 다운로드한다. (설치 링크 : www.python.org/downloads/)


2. Python setup 실행 후 [Install Now]를 클릭한다.


3. 설치가 완료되었으면 자신의 프로그램 목록에 IDLE이 설치된 것을 확인할 수 있다.
(필자는 3.8의 Python을 사용하고 있으며, 방법대로 3.9.3을 설치한 사용자는 IDLE(Python 3.9 XX-bit)로 표시될 것이다.)


4. IDLE을 열면 다음과 같은 화면이 우리를 반긴다. 이곳이 Python과 대화를 할 수 있는 인터프리터가 구현된 곳이라고 생각해주면 된다.


5. 탭의 [File] - [New File](단축키 : Ctrl + N)을 눌러 새로운 .py를 만들기 위한 준비를 하자
* .py란 파이선으로 작성된 언어 스크립트의 확장자이다. Python과 관련된 확장자 중 하나로 다른 확장자는 Complied된 파일인 .pyc, 라이브러리 형태로 작성된 .pyd 등등이 있다.

&lt;New File탭&gt;


6. 새로운 스크립트 작업창에 print("Hello World") 입력 후 탭의 [File] - [Save](단축키 : Ctrl + S)를 선택하여 파일을 저장한다.(이름은 어떻게 하든 무관하니, 지금은 hello.py로 지정한다.)

&lt;print("Hello World")&gt;

7. 탭의 [Run] - [Run Module](단축키 : F5)를 눌러 정상적으로 실행되는지를 확인하자, New File을 눌렀던 그 창에서 Hello World가 출력되었다면 성공이다.



* 지금까지 잘 따라왔다면, Python의 세계에 그림을 그릴 도화지를 준비한 것이다. IDLE만으로 충분히 따라올 수 있는 튜토리얼이 되겠지만, IDLE은 기능이 제한적이기에 여타 다른 개발도구를 사용하고 싶은 사람들은 아래 있는 개발도구들을 추천한다.



PyCharm - 직관적이고, 설치도 어렵지 않다. 추천합니다.
(설치 링크 : www.jetbrains.com/ko-kr/pycharm/download/#section=windows)


③ ATOM - 다른 언어의 개발 툴까지 같이 제공해주는 좋은 프로그램이다. 사용법도 어렵지 않고, 인터페이스도 깔끔하다
(설치 링크 : atom.io/ ) >> 별도로 python플러그인을 설치해야 된다.


④ Anaconda - 실제로는 Anaconda에 들어있는 Jupyter Notebook이라는 프로그램이 개발환경이 되는데, 웹으로 작성되는 코드이다 보니 필자는 익숙하지 않아서 쓰지 않았다. 그러나 Anaconda가 제공하는 기능(예를 들면 상이한 버전의 파이선을 같은 환경에서 구동 가능하다는 것 등)이 워낙 강력하기 때문에, 데이터베이스 등 수학/기하적인 용도로 Python을 사용하는 사람이라면 추천한다.
(설치 링크 : www.anaconda.com/products/individual)


* 기존에 다른 개발도구를 사용하다가 Python을 배우는 경우 사용하던 개발도구가 Python을 Plugin처럼 지원하는 경우도 있다.(ex : Visual Studio) 우리의 용량은 소중하니 잘 확인해보자.


&lt;Python의 로고&gt;

Life is short. You need Python.
- Bruce Eckel -


멋진 말이다. 평범한 사람들에게 프로그래밍의 멋짐을 보여준 언어이자, 수많은 프로그래머들의 시간 단축을 도와주는 훌륭한 언어가 우리의 친구 Python이다.

대학에서 컴퓨터 꽤나 만져본 사람들은 C나 JAVA, BASIC의 문법을 보다가 Python의 문법을 보면 "아니 이게 가능해?"라는 말을 많이 한다. 변수선언으로 부터의 자유로움, 직관적인 명명법 등의 특징 덕분에 개발을 조금만 공부했어도 저~중 수준의 Python의 코드를 읽는 것에는 문제를 찾기 어려울 정도이다.

주관적인 생각으로는 다음과 같은 Python의 특징이 언어를 쉽고, Pythonic하게 만든다고 생각한다.

1. 낮은 난이도와 그에 따른 빠른생산속도
2. 동적 타이핑의 대화형 언어(인터프리터식)
3. 확고한 디자인 철학과 많은 사용자



1. 낮은 난이도와 그에 따른 빠른 생산속도
Python의 난이도가 얼마나 낮은 지를 이야기하는 것은 입을 상하게 하는 일이다. 기본적인 코드를 기준으로 C나 JAVA의 몇십 줄에 해당하는 코드가 Python에서는 단 두세 줄 만에 해결되는 일도 심심치 않게 있다. 이로 인해 ①프로그램을 입문하는 사람들의 교육용이나, ②개발 프로토타입과 스크립트 작성에 많이 쓰이는 언어가 Python이다.

2. 동적 타이핑의 대화형 언어(인터프리터식)
프로그래밍 언어는 동작 방식으로 다음과 같이 나뉜다.
① Compiler 식 언어 : 코드를 작성 후 Compile 해서 목적 프로그램을 만들어낸 후 그 목적프로그램을 실행하는 언어
② Interpreter 식 언어 : 코드의 Compile없이 한줄한줄 읽어들이며 동작하는 언어
파이선은 Interpreter 식 언어이다. Python 을 설치하고 콘솔에 print "hello World!"를 치면 다른언어 입문도서에서 보고 이게 뭐지 했던 그 대여섯줄짜리 Hello world가 한줄로 나오는 것이다! Compiler식 언어와 Interpreter식 언어의 장단점은 명확하지만, 즉각적인 반응을 해주는 파이선 Interpreter를 처음 본 그 순간은 아마 잊지 못할 것 같다.

3. 확고한 디자인 철학과 많은 사용자
다음은 Python에서 import this를 하게 될 경우 나오는 파이선의 디자인 철학이다. (Import 가 뭔지는 지금은 몰라도 된다.)

1. 추함보다는 아름다움이 낫다.
2. 묵시적인 것보다는 명확한 것이 낫다.
3. 복잡함보다는 단순함이 낫다.
4. 난해한 것보다는 복잡한 것이 낫다.
5. 중첩하는 것보다는 평평하게 쓰는 것이 낫다.
6. 오밀조밀한 것보다는 띄어 쓰는 것이 낫다.
7. 가독성은 언제나 중요하다.
8. 특수한 경우라 해도, 규칙을 깰 만큼 특수하지는 않다.
9. 하지만 실용적인 것이 순수함을 이긴다.
10. 에러는 절대로 조용히 넘어가서는 안 된다.
11. 명시적으로 조용히 넘어가라고 되어있다면 모르겠지만.
12. 모호함에 직면하더라도, 추측에 의존하려는 유혹을 이겨내라.
13. 언제나 무언가를 하는 방법은 가급적이면 정말 오로지 한 가지뿐 이어야 한다.
14. 당신이 네덜라드 인이 아닌 이상, 처음에 바로 보이지 않더라도 말이다.
15. 바로 지금이 제일 적절한 때다.
16. 비록 *바로 지금*보다 아예 하지 않는 경우가 나을 때가 자주 있더라도 말이다.
17. 구현한 것을 설명하기 어렵다면, 그것은 좋은 아이디어가 아니다.
18. 구현한 것을 설명하기 쉽다면, 그것은 좋은 아이디어일 수도 있다.
19. 네임 스페이스는 정말 훌륭한 아이디어이니, 자주 사용하자!

- Tim Peter -

이 수많은 명제들의 철학을 다 지키면, 최상의 코드가 아니라는 가정하에 작성된 코드보다 좋은 방안이 생성되기 마련이다. 파이선은 2019년 기준 전 세계 8,200,000명이 넘는 개발자의 손에서 작성 중이고, 이 성장 속도는 범용적인 언어인 JAVA의 사용자 7,100,000명을 가뿐히 뛰어넘은 추세이다. 내가 파이선의 모듈을 만들고 배포를 하면 최대 8,200,000명이 넘는 사람들이 와서 이걸 검토하고 수정한다는 거다! ㄷㄷ;
(출처 :www.zdnet.com/article/programming-languages-python-developers-now-outnumber-java-ones/)


이렇게 단순하면서 아름다운 파이선의 지식을 작지만 적어두며, 파이선과 컴퓨터에 입문하게 되는 사람들에게 스타터팩이 되고 싶은 마음으로 Python Tutorial을 시작한다. 단순한 언어이기에 또 블로그를 시작한 지 얼마 되지 않아 아직 흥미가 떨어지지 않았기에 이번 달 말까지는 매듭을 짓게 될 거 같다.

+ Recent posts