반응형

프로그래밍의 기본이라고 하면, 우선 "값"과 "계산"이다. Python으로 사용되는 기본 값과 계산 방법 등을 설명한다.


값에는 유형이 있다

프로그래밍에 익숙하지 않은 사람이 처음 도전했을 때, 처음에 걸리는 것은 "값은 종류가 있다"는 것이다.

많은 초보자는 Python과 같은 스크립트 언어부터 시작을 공부한다. 이러한 언어에서는 변수(값을 보관 해 두는 곳) 등을 사용하는 경우도 그다지 "값 유형"등을 의식하지 않도록 되어 있다. 따라서 "어떤 값도 변수에 넣어 사용하면 그것으로 움직인다"고 착각해 버린다.

나중에 설명 하겠지만, Python에도 값에는 "유형"이 있다. 숫자, 텍스트, 문자 ......라는 식으로 다양한 종류가 있으며, 그 종류마다 값의 사용법은 달라진다. 하지만, 실제로 프로그램을 쓸 때는 대부분 값의 "유형"을 의식하지 않고 쓸 수 있게 되어 있다.

간단한 예를 살펴 보자. IDLE을 시작하고 아래에 올린 3문장의 스크립트를 한 줄씩 실행하길 바란다.

print(123 + 456)
print('123' + '456')
print(123 + '456')

보면 대체로 비슷한 두 값을 덧셈하고 있다. 어떤 것도 같은 생각이 든다.

그런데 실제로 실행해 보면, 이 3개는 전혀 다르게 동작한다. 첫 번째는 "579"가되고, 두 번째는 "123456"가 되고, 세 번째는 에러가 발생한다.

이것은 첫 번째 숫자로 계산하고, 두 번째는 텍스트로 계산된다. 세 번째는 두 가지의 종류의 다른 값을 억지로 계산하려는 시도했다가 실패를 했다.

즉, Python이라는 언어는 "값 유형"라는 것을 잘 이해해 두지 않으면 사용할 수 없다. 우선, 이 점을 잘 이해해 두자.


주요 값의 유형

그럼 Python에는 어떤 값의 유형이 있을까? 기본적인 사항을 설명한다.

숫자

프로그래밍에서 사용 값이라고 하면, 우선 "숫자"이다. 숫자에 대해서는 Python에서는 많은 유형이 있는데 "정수", "부동 소수점" "복소수"등이 있다.

  • 정수 : 보통의 정수이다. 단지 숫자를 쓰는 것만으로 된다.
  • 부동 소수점 : 소수점 이하의 값이다. 또는 매우 자리수가 많은 숫자에 사용하기도 한다. 이것은 보통 소수의 "."을 붙여 쓴다.
  • 복소수 : 허수이다. 이것은 끝에 "J"를 붙인다.

이 중에 우선 '정수'와 '부동 소수점"만 기억해 두도록 하자. 복소수는 필요하여 사용하게 될때까지 잊고 있어도 된다.

텍스트

텍스트는 값의 전후를 따옴표로 묶어 설명한다. 이것은 "작은 따옴표", "큰 따옴표", "트리플 쿼트"라고 한 것이 사용할 수 있다.

'Hello'    "Welcome"   '''Bye'''

이런 느낌이다. 이 가운데 작은 따옴표(')와 큰 따옴표(")은 동일하다. 일반적으로 텍스트를 쓸 때, 이 중 하나에 쓴다.

마지막 트리플 쿼트(''')은 여러 줄의 텍스트를 쓸 때 사용한다. 작은 따옴표와 큰 따옴표는 텍스트 값의 줄로 할 수 없다. 트리플 쿼트는 도중에 행을 변경해도 된다.

부울

이것은 프로그래밍 특유의 값이다. 이것은 "양자 택일의 값"이다. 참 또는 거짓, yes 또는 no, 올바른 또는 그른지 이런 것을 나타내는데 사용한다. 이것은 "True", "False"라는 Python에 포함되어 있는 키워드를 사용하여 작성한다. 다른 값은 사용할 수 없다.

실제로 이러한 값을 사용한 예제는 아래와 같다. 아래의 코드를 IDLE에서 한 줄씩 실행해 보자.

print(12345) 
print('Hello') 
print('''welcome, 
and bye.''') 
print(True)

조금 이해하기 어려운 것은 트리플 쿼트 텍스트일 것이다. 그 외에 그렇게 어려운 것은 없을 거다.



변수와 계산

값은 그대로 자체를 그대로 사용하는 일은 그다지 많지 않다. 보통은 "변수"에 넣어 사용한다.

변수란 값을 보관할 준비가 된 메모리 영역을 나타내는 것이다. 어째서 이런 것이 있는가? 하고 의문을 가질 수 있는데, 여기서 이를 설명하기에는 너무 내용이 방대하다. 그래서 우선은 알기 쉽게 "여러가지 값을 넣어 두는 용기"라고 생각두면 충분하다. 값은 변수에 넣어 놓고, 계산하고, 그 결과를 다시 변수에 넣고 처리해 나간다.

이 변수는 등호(=)를 사용하여 값을 넣는다. 예를 들면 이런 식이다.

변수명 = 값

이것은, 우변 값이 좌변의 변수에 포함되어 있다(대입라고 한다). 변수 이름을 쓰고, 이런 식으로 값을 대입하면 바로 변수를 만들어 사용할 수 있게 된다. "미리 이런 변수를 만들어 두는 거"라고 해서 귀찮은 일은 아니다.

예를 들어, "a = 10"라고 하면, 변수 a가 바로 만들어 진다. 이 변수는 값과 동일하게 취급 할 수 있다.

a = 10
print(a) 
b = 'Hello'
print(b)

연산에 대해

변수는 단지 값을 보관할 뿐만 아니라, 다양한 계산을 한 결과를 저장하기 위해 많이 사용된다.

숫자 연산

숫자 연산 기호는 이른바 사칙 연산 기호를 그대로 사용할 수 있다. 즉, 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)를 말한다. 키보드에 기호가 보이기 때문에 알 것이다. 그런데, 여기서 %는 무엇인가 라고 생각한 사람이 있을 것이다. 이는 "나눗셈을 하고 남은 나머지"를 계산하는 것이다.

a = 10
b = 20
c = a + b 
print(c)

이 밖에 '지수'의 기호 있다. [**]이다. 예를 들어, "10의 제곱"이라면, "10**2" 이렇게 쓴다.

텍스트 연산

또한 "텍스트의 연산 '라는 것도 있다. 연산은 '덧셈'과 '곱셈'을 사용한다.

  • [ + ] 기호 : 왼쪽과 오른쪽 텍스트를 하나로 연결한다.
  • [ * ] 기호 : 왼쪽의 텍스트를 오른쪽 회수 만큼 반복한다.

덧셈은 간단한다. 예를 들어, [ 'A' + 'B' ]라고 하면 "AB"라는 텍스트가 될 것이다. 곱셈은 [ 'A' * 3 ]라고하면 "AAA"이다.

a = 'A'
b = 'B'
c = a + b 
print(c)

print('A' * 3)



값 유형의 변환과 텍스트

값에는 유형이 있다. 다른 유형의 값끼리는 계산할 수 없다. 그렇게 되면, 예를 들어 "텍스트와 숫자를 사용하여 계산한다"라고하는 것은 불가능하다는 걸 의미한다.

그러나 물론 그런 일은 없다. 제대로 된 방법으로 Python에는 값을 다른 유형으로 변환하는 기능이 포함되어있다. 우선 다음의 것만 제대로 배워보도록 하자.

  • int(값) - ()의 값을 정수로 변환한다.
  • float(값) - ()의 값을 실수로 변환한다.
  • str(값) - ()의 값을 텍스트로 변환한다.
  • bool(값) - ()의 값을 부울 값으로 변환한다.

이 처럼 어떤 유형의 값을 다른 유형으로 변환하는 것을 "형 변환"이라고 하고, 영어로는 "캐스팅(casting)"이라고 한다.

그럼 아래 형 변환 간단한 샘플들을 보도록 하겠다. 이런 방법로 텍스트와 정수를 변환하여 사용한다면 될 것이다.

텍스트에 값을 정리

값 형 변환는 "계산 값을 맞출려고"하는 경우도 있지만, 그 보다 자주 사용하는 것이 "print에 값을 출력하기 위해서"이다. print는 어떤 값도 출력할 수 있지만, 텍스트를 사용하여 값을 처리하려는 순간 오류가 발생한다.

a = 123
b = 456
c = a + b
print(c)

이것은 매우 간단한 샘플이다. 그런데 이것을 조금 처리하려는 순간 갑자기 문제가 발생한다.

a = 123
b = 456
c = a + b
print('answer :'+ c)

갑자기 왜 오류가 발생하는가? 라고하면, print()에 쓴 'answer :' + c가 원인이다. 텍스트와 숫자를 연결해 보려고 했기 때문에 "변수 c는 텍스트 아니야"라고 오류가 발생하는 것이다. 텍스트를 + 기호로 연결하기 위해서는 연결 값이 텍스트가 아니면 안된다.

a = 123
b = 456
c = a + b
print('answer :' + str(c))

이제 문제없이 동작하게 되었다. print()를 보면 'answer :'+ str(c)와 같이 되어 있다. 변수 c를 str로 텍스트로 변환한 것으로 정상적으로 동작하게 되는 것이다.

이와 같이, "텍스트으로 값을 연결하려고 하여, 오류가 발생하게 되었다"라는 것은 초보자로써 언제나 하는 실수이기에, print에 오류가 발생하면 먼저 "값 형 변환, 값 형 변환"라고 머릿속에서 반복하자.

반응형

'Python' 카테고리의 다른 글

[Python] 클래스 사용  (0) 2017.12.22
[Python] 함수(function)  (0) 2017.12.22
[Python] 리스트, 튜플, 레인지, 세트, 사전  (0) 2017.12.22
[Python] 구문(statement)  (0) 2017.12.22
[Python] 우선 값과 계산의 기본  (0) 2017.12.22
[Python] Python 개발 환경  (0) 2017.12.22

+ Recent posts