본문 바로가기
개발

[파이썬&루비] 문자와 데이터 타입

by 마스터누누 2017. 5. 28.
728x90
반응형

문자와 데이터 타입




컴퓨터는 숫자를 계산하기 위해 고안된 도구지만

기술이 발전함에 따라 이미지, 소리, 문자 등을 처리할 수 있게되었다.

그 첫번째 단계라고 할 수 있는 문자에 대해 알아보자


컴퓨터 프로그래밍에서는 문자와 함께 문자열 이라는 표현을 사용한다.

예를 들어 "한글"이라는 표현에서 한, 글, 각각의 표현을 문자라고 하며, 

연속된 문자를 문자열 이라고한다.


즉, 문자가 열을 지어 연결되어 있으므로 문자열으로 표현한다.

문자는 영어로 chracter, 문자열은 string이다.

string의 사전적인 표현은 여러개를 엮어놓은 줄이라고 하는데,

이 또한 여러개의 문자를 함께 엮어놓은 데이터라는 의미에서 그렇게 부른다.


이러한 문자열을 표현하기 위해서는 "" 또는 ''가 필요한데

"/' 가 시작되는 부분에서 끝나는 부분까지 문자열로 인식한다.





1
2
3
4
5
6
7
8
9
10
11
# python
print('Hello')
print("Hello")
print("Hello 'world'")
print('Hello "world"')
 
# ruby
puts('Hello')
puts("Hello")
puts("Hello 'world'")
puts('Hello "world"')
cs


문자열을 출력하는 코드이다.

앞서 말한것과 마찬가지로 큰 따옴표와 작은 따옴표의 조합으로 문자열 표현이 가능하다.

이 때, 큰 따옴표로 시작하면 큰 따옴표, 작은 따옴표로 시작하면 작은 따옴표로 끝나야 한다.

만약 따옴표를 출력하고 싶다면 3,4번 예제처럼 다른 따옴표를 외부에 감싸줘야한다.

루비의 경우 큰 따옴표의 기능이 미묘하게 다른데, 이 내용은 나중에 설명한다.





문자열의 제어


1
2
3
4
5
6
7
8
9
10
11
12
13
# python
print('Hello '+'world')
print('Hello '*3)
print('Hello'[0])
print('Hello'[1])
print('Hello'[2])
 
# ruby
puts('Hello '+'world')
puts('Hello '*3)
puts('Hello'[0])
puts('Hello'[1])
puts('Hello'[2])
cs


이번에는 문자열을 제어하는 방법에 대해 알아보자.

2개의 문자를 하나로 만드는 것은 + 연산으로 가능하다.

이 때 여러번 문자를 출력하기 위해서는 * 연산으로 원하는 만큼 출력이 가능하다.


또한, 문자열을 배열처럼 취급하여 인덱스 값에 있는 문자를 바로 뽑을수도 있다.

주의해야할점은 인덱스는 0에서 부터 시작이라는 점이다.

Java나 Javascript에서 charAt()으로 사용하던 기능과 비슷한 느낌이다.





1
2
3
4
5
6
7
8
9
10
11
12
# python
print('hello world'.capitalize())
print('hello world'.upper())
print('hello world'.__len__())
print(len('hello world'))
print('Hello world'.replace('world''programming'))
 
# ruby
puts('hello world'.capitalize())
puts('hello world'.upcase())
puts('Hello world'.length())
puts('Hello world'.sub('world''programming'))
cs


좀 더 심화적으로 문자열을 제어할 수 있는 방법이다.

capitalize는 첫번째 문자만 대문자로 바꿔주는 메소드이다.

또한 모든 문자를 대문자로 바꿔줄수 있는데, 파이썬은 upper(), 루비는 upcase() 메소드이다.


그리고 문자열 연산에서 가장 중요한 문자열의 길이를 나타내기위한 메소드도 제공된다.

파이썬은 .__len__() 이나 len("문자열")을 사용하고 루비는 length()를 사용한다.


마지막으로 단어를 수정하기 위해서 각각 replace와 sub 메소드가 제공된다.

첫번째 인자로 바꿀 단어, 두번째로 바꿔질 단어가 들어간다.





특수문자


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# python
print("egoing's \"tutorial\"")
print("\\")
print("Hello\nworld")
print("Hello\t\tworld")
print("\a")
print('Hello\nworld')
 
# ruby
puts("egoing's \"tutorial\"")
puts("\\")
puts("Hello\nworld")
puts("Hello\t\tworld")
puts("\a")
puts('Hello\nworld')
cs


다음은 특수 문자에 대한 설명이다.

첫번째 특수 문자는 이스케이프 문자(\)인데, 전통적인 프로그래밍 언어에서 사용 되는 방식과 비슷하다.

사용 방법은 일반 문자로 해석되어질 문자 앞에 이스케이프 문자를 넣어준다.


두번째로 개행을 하려면 \n을 사용한다.

\는 특정 문자와 결합하여 기능이 추가 되는데 \n도 그 예중의 하나이다.

n은  new line을 뜻한다.


같은 맥락에서 \t는 들여쓰기를 나타내며 한번의 들여쓰기가 실행된다.

두번 들여쓰기를 위해서는 \t\t를 해주면 된다.


\a는 alert을 뜻하며 컴퓨터의 기본 경고음을 출력한다.


그런데 루비와 파이썬의 문자열 처리방식은 조금 다르다.

각 파트의 마지막 예제를 입력해보면 다른 결과를 낸다.

루비의 ""과 ''의 기능이 조금 다르기 때문이다.

루비에서 작은 따옴표를 사용하면 안에 있는 문자를 그대로 출력하게 된다.





데이터 타입


1
2
3
4
5
6
7
# python
print(10+5)
print("10"+"5")
 
# ruby
puts(10+5)
puts("10"+"5")
cs


앞서 문자열과 숫자를 사용해 보면서 데이터 타입이라는 것에 대해 어렴풋이 감이 잡혔을 것이다.

만약 숫자 연산을 print에 넣으면 수에 대한 연산 결과가 나오지만,

문자열 더하기를 print에 넣으면 두 문자열이 합쳐진 결과가 나온다.


그것은 +의 양쪽의 정보(데이터 타입)가 어떤것이냐에 따라 완전히 다르게 동작하기 때문이다.

첫번째 예제는 산술 연산에서 +이며, 두번째는 문자를 결합시켜주는 의미에서의 +이다.

따라서 그 형태에 따라 완전히 다른형식으로 인식한다는 것을 알 수있다.

즉, 숫자 데이터 타입과 문자 데이터 타입을 구분한다는 것이다.


이를 통해 우리는 2가지의 타입이 있다는것을 배웠다.

이 외에도 다른 데이터 타입들이 존재하는데, 이후 포스팅을 통해서 살펴보도록하자.




출처 : 생활코딩, 파이썬&루비

반응형

댓글