파이썬(Python) 강좌 1. 기본 연산 및 자료형, 변수
- 프로그램언어/파이썬(Python)
- 2017. 3. 27.
이 포스팅은 머신러닝 및 데이터마이닝, 인공지능을 위한 파이썬 강좌입니다. 추후 간단한 머신러닝과 추천에 관련된 데이터마이닝을 할 예정입니다. Java로 가능한 부분은 Java와의 코드를 비교하여 파이썬의 속도 및 수준등을 비교 할 예정입니다.
현재 이 글을 쓰고 있는 사람은 데이터마이닝(추천 관련)을 전문적으로 하고 있으나, 파이썬에 대해서는 아직은 기초지식만 가지고 있는 상태이고, 여러가지의 책들과 포스팅등을 통해서 저 역시 공부를 하면서 포스팅을 하고 있으니 비슷한 수준이구나 생각하시면서 보시면 됩니다.
이 포스팅을 읽는 대상은 프로그래밍을 배우지 않는 분들도 쉽게 따라할 수 있게 할 예정입니다. 추후 이 포스팅은 제가 다니고 있는 회사분들에게 강의를 하는 목적도 가지고 있기 때문에 최대한 쉽게 작성할 예정입니다.
현재 파이썬을 설치조차 하지 않는 분들은 제가 예전에 포스팅했던 파이썬 설치부터 시작하시길 바랍니다.
1. 기본 연산
파이썬도 다른 언어와 마찬가지로 기본 연산은 방식이 상당히 유사합니다. 다만 몇가지 연산들이 파이썬 2.X와 3.X와 차이가 나는 경우가 있습니다. 예를 들어, 파이썬 2.X는 정수끼리의 계산은 결과가 정수가 나오고(자바와 동일) 3.X는 실수가 나올 경우, 자연스럽게 실수가 나오기 때문에 이 부분에 대해서 Java 소스를 포팅한다던지 혹은 머리속에서 계산하는 것을 코딩할 때 조심해야 될 필요성이 있습니다.
다행인 것은 파이썬은 형변환이 매우 자유롭기 때문에 형변환만 잘해주시면, 크게 문제가 될 것은 없습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | a=5 b=3 print('1:', 2-1) print('2:', 1-2) print('3:', 1/2) print('4:', 2/1) print('5:', 5//2) print('6:', 5%2) print('7:', 3**2) print('8:', 3.15e2, 3.15E-3) print('9:', pow(2, 10)) print('10:', a is b) |
파이참(Pycharm)을 실행하고, 파일을 하나 생성한 후, 위와 같이 산술을 실행시켜 봅니다.
대충 파이썬은 어떻게 결과를 보여줄지 많은 생각을 하실텐데 결과는 아래와 같습니다.
참고로, print라는 것은 안에 있는 내용을 화면에 뿌려줘라 이른 말을 뜻합니다.
<결과>
1 2 3 4 5 6 7 8 9 10 | 1: 1 2: -1 3: 0.5 4: 2.0 5: 2 6: 1 7: 9 8: 315.0 0.00315 9: 1024 10: False |
몇가지 인상적인 부분은 실수처리 부분과 "**"는 거듭제곱을 한 부분입니다. 그리고, 2/1과 5//2의 결과값이 앞은 실수, 뒤는 정수로 뿌려주는 것이 다릅니다. 8번은 지수를 표현한 것이고, pow는 2의 거듭제곱 회수를 뜻합니다.
pow(2, 10)과 2**10은 동일한 표현입니다. pow로 명시적으로 쓸 것인지 **를 쓸 것인지는 프로그램의 성격 및
개인의 취향등 갈리겠네요.
마지막으로 a is b는 boolean 연산을 보여주는 것입니다. a는 5라는 값을 가지고 있고, b는 3이라는 값을 가지고 있기 때문에 당연히 a is b는 False가 나올 것입니다. 만약 a=5, b=5 였다고 한다면, 아래의 a is b는 True가 나왔을 것입니다. 혹은 "a is b+2" 같은 표현 역시 True가 나올 것입니다. b는 현재 3이고, 2를 더하면 5가 나오기에 a와 b는 같아지기 때문입니다.
2. 자료형
어떤 프로그램이든지 자료형이라는 것이 존재합니다. 파이썬은 특별히 자료형을 지정하지 않기 때문에 마치 없는 것처럼 느껴지지만, 주어지는 값에 따라서 변수가 스스로 바뀌는 형태입니다.
즉, A라는 변수에 10을 담으면 정수형(Integer)가 되는 것이고 변수에 문자열 "10"을 담으면 문자형(String)이 되는 것입니다. 이렇듯 개발자 및 사용자에게 매우 쉽게 코딩을 경험시켜 주고, 소스의 라인이 매우 간단해지는 경험을 얻게 됩니다.
1 2 3 4 | print('1:', type(10000)) print('2:', type(3.14)) print('3:', type('동해물과 백두산이')) |
<결과>
1 2 3 | 1: <class 'int'> 2: <class 'float'> 3: <class 'str'> |
위의 입력과 출력에서 보다시피, 파이썬도 마찬가지로 int(정수), float(실수), str(문자열)을 가지고 있습니다.
3. 변수선언
맨 처음 기본 연산을 설명하면서 변수를 선언하는 것을 보여줬으나, 조금 더 디테일하게 적어보겠습니다.
위에서 설명한 대로 파이썬은 다른 언어처럼 아래와 같은 선언을 하지 않습니다.
ex) 자바(Java)
1 2 3 | int a = 10; String title = "동해물과 백두산이 마르고..."; Double doub = 3.14; |
위는 자바에서 일반적으로 변수를 선언할 때 쓰이는 방식이고, 대부분의 언어들이 사용하고 있는 "변수형선언 변수 내용" 이 3가지를 쓰는 모습을 보여줍니다.
위 내용을 파이썬으로 변경시켜 보겠습니다.
1 2 3 4 5 6 7 | a = 10 title = "동해물과 백두산이 마르고..." doub = 3.14 print(a, type(a)) print(title, type(title)) print(doub, type(doub)) |
<결과>
1 2 3 | 10 <class 'int'> 동해물과 백두산이 마르고... <class 'str'> 3.14 <class 'float'> | cs |
위 내용에서 보다시피, 선언을 아예 해주지 않습니다. 아래에 결과를 보면 알겠지만, 별다른 선언이 없어도 Value(값)에 따라서 변수가 알아서 바뀝니다. 그러면 이런 의문이 들수도 있겠습니다. a라는 변수에 10을 넣고, 다시 3.14를 넣으면 알아서 float으로 변경이 될까??
1 2 3 4 | a = 10 print(a, type(a)) a = 3.14 print(a, type(a)) |
<결과>
1 2 | 10 <class 'int'> 3.14 <class 'float'> |
결과는 YES입니다. 변수의 형태마저 깨부수는 재미있는 모습을 보여줍니다.
그러면 위 과정이 궁금할 수도 있을 것 같아서, 아래와 같이 코딩을 해봤습니다.
1 2 3 4 5 6 | a = 10 print(a, type(a), id(a)) a = 20 print(a, type(a), id(a)) a = 3.14 print(a, type(a), id(a)) |
id라는 것은 주소값을 보여주는 것입니다. 제 머리속의 예상은 10에서 20을 변경했을 때에는 같은 int형이라서 주소값의 이전이 없지만, 3.14를 줬을 경우는 float형으로 변경이 되었기 때문에 새로운 변수를 할당할 것으로 예상을 했습니다.
<결과>
1 2 3 | 10 <class 'int'> 1782627056 20 <class 'int'> 1782627376 3.14 <class 'float'> 2287663321544 |
제 예상이 맞았네요. 10과 20은 같은 주소값인 '1782627056'을 사용하지만, 3.14로 변경하면서 다른 주소로 옮겼습니다. 위 주소값은 각자 컴퓨터의 변수 주소값이 다를테니 '1782627056'이 아니라고 해도 잘못 나온 것이 아닙니다.
이상 파이썬의 간단한 기본연산, 자료형, 변수에 대해서 알아봤습니다.
다음 포스팅은 문자열 처리 방안에 대해서 자세히 올려보도록 하겠습니다.
참고로 이 포스팅은 여러가지 파이썬 관련 교재들의 내용과 시중에 돌아다니는 유튜브 동영상 및 K-MOOC 강좌 마지막으로 현재 제가 배우고 있는 수업의 내용들을 기초로 재구성한 내용입니다.
'프로그램언어 > 파이썬(Python)' 카테고리의 다른 글
파이썬(PYTHON) 강좌 #3 - 반복문과 구구단 짜기 (0) | 2018.12.30 |
---|---|
파이썬(Python) jpype 설치시 에러 (0) | 2018.04.23 |
파이썬(Python) 강좌 2. 리스트(List), 딕셔너리(Dictionary) (1) | 2017.04.09 |
파이썬(Python) 설치 및 세팅하기 (2) | 2017.03.20 |
파이썬(Python)은 무엇인가?? (0) | 2017.03.20 |