TigerCow.Door

안녕하세요.

오늘은 파이썬에서 문자열 포매팅에 대해서 알아보도록 하겠습니다.

특정한 값이나 변수등을 문자열에 입력하거나 문자열이 변수에 값에 의해 바뀌어야 하는 등의 상황에서 유용하게 사용될 수 있습니다.


1. 문자열 포매팅


먼저 아래와 같은 상황이 있다고 생각해봅시다.



근데 만약, a라는 변수의 값을 5로 바꾼다면?



그럼 b의 문장, "변수 a의 값은 3입니다."라는 문장은 틀리게 됩니다.

그럼 b의 문장이 참이 되도록, 문장에서 특정한 값을 바꾸게 하는 방법은 무엇이 있을까요?

바로 문자열 포매팅입니다.

문자열 포매팅이란 문자열안에 특정한 값을 삽입하는 방법을 말합니다.

문자열 포매팅에는 숫자를 대입하거나 문자열을 대입하는 등 다양한 방법이 있습니다.

하나씩 알아보도록 할게요.



1-1. 숫자 바로 대입하기



위의 예제에서 처럼 숫자를 대입하고 싶은 곳에 %d 를 입력하고 해당 부분에 삽입할 숫자는 문자열 가장 뒤에 % (숫자)를 입력함으로써 문자열 포매팅을 합니다.

이때 %d 는 문자열 포맷 코드라고 부르는데, 뒤에서 자세히 알아보도록 하겠습니다.



1-2. 문자열 바로 대입하기



숫자를 바로 대입하는 방식과 비슷한 방식으로 진행됩니다.

차이점은 숫자 바로 대입에서는 %d 가 쓰였지만, 문자열 바로 대입에서는 %s 가 사용된 점입니다.

역시나 %s 는 문자열 포맷 코드라고 부르며 자세한 이야기는 뒤에서 나누도록 하겠습니다.



1-3. 변수로 대입하기


그럼 숫자 또는 문자열을 바로 대입하는 것이 아니라, 변수로써 대입하는 방법은 무엇일까요?

아래 예제를 통해 알아보도록 하겠습니다.



위의 예제를 통해 대충 감이 잡히시나요?

먼저 한가지 알아야 할 점은, 변수의 값이 숫자형인지 문자열인지 알아야합니다.

만약 변수의 값이 문자열이라면 문자열 포맷 코드를 %d는 사용하지 못하고 %s를 사용해야 합니다.

하지만 변수의 값이 숫자라면 일반적으로 %d 를 사용하지만 %s 또한 사용이 가능합니다.



1-4. 여러개 대입하기



한번에 여러 숫자 또는 여러 문자열을 대입하는 방법은 위의 예제처럼,

각각의 변수를 % 뒤에 괄호를 하고 그 내부에서 콤마(,)로 구분하면 됩니다.



2. 문자열 포맷 코드


위에서 문자열 포맷 코드라는 이야기가 나왔는데요, 대체 무엇일까요?

쉽게 말해서 특정 값이나 변수를 문자열로 포맷시킬때 이용되는 코드입니다.

위의 예제에서 보았던 것 처럼, 문자열은 %s로 받아야하고, 문자열을 %d로 받으면 오류가 난다고했죠?

그런 개념입니다.

문자열 포맷 코드는 아래 표를 참고하시면 되겠습니다.


설명

%s

문자열(String)

%c

문자 1개(Character)

%d

정수(Integer)

%f

부동 소수(floating-point)

%o

8진수

%x

16진수

%%

Literal % (문자 % 그 자체)



3. 포매팅 응용하기


위에서 쭉 알아보았듯이, 문자열 포매팅은 특정 값을 문자열 내에 삽입하기 위해서 사용됩니다.

그리고 그러한 포매팅에서 더욱 유용하게 사용될 수 있는 몇가지를 소개하겠습니다.


3-1. 정렬 및 공백


포매팅을 할때 특정 값이 몇칸의 공백을 가질 것인지, 그리고 정렬은 어떻게 할 것인지 정할 수 있습니다.

아래 예제로 확인하세요.



위의 예제에서 볼 수 있듯이 문자열을 포맷할때에는 크게 아래와 같이 구분이 됩니다.

%   (- / +)   (숫자)   (포맷 코드)

이때, -는 왼쪽 정렬, +는 오른쪽 정렬입니다.

또한 숫자는 해당 값이 문자열에서 몇 칸을 가질 것인지를 정해줍니다.



3-2. 소수점 표현하기


또한 소수를 표현할때 몇번째 자리 까지 표현할지를 조정할 수 있습니다.

아래 예제를 통해 확인하세요.




4. 문자열 포매팅 총 정리


지금까지 알아본 문자열 포매팅을 간단하게 정리해보도록 하겠습니다.

먼저 문자열에 특정 한 값을 대입하기 위해 사용되는 문자열 포매팅은 기본적으로 아래와 같은 구조를 가집니다.

"문자열 포매팅은 %  (- or +)  (숫자1 . 숫자2)  (포맷 코드) 번째 포스팅입니다." % (숫자 및 문자열 및 변수.. 포맷코드에 맞도록!)

(- or +) 를 통해 입력되는 값을 왼쪽 정렬로 할지 오른쪽 정렬로 할지 결정할 수 있습니다.

(숫자1 . 숫자2)  에서는 숫자1을 통해 입력되는 값이 문자열에서 몇칸을 가질지, 그리고 숫자2는 만약 소수를 표현하는 것이라면 소수점 몇번째 자리까지 표시할 것인지를 결정할 수 있습니다.

(포맷 코드) 는 입력되는 값이 어떠한 자료형인지 확인하고 그에 맞춰서 올바른 코드를 입력해야 합니다.



이렇게 해서 파이썬의 문자열 포매팅에 관해 알아보았습니다.

다음 포스팅에서는 파이썬에서 문자열과 관련된 함수들을 소개해드리도록 하겠습니다.

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요

안녕하세요.

오늘은 파이썬에서 문자열 인덱싱(indexing)과 슬라이싱(slicing)에 대해서 알아보겠습니다.

궁금하시거나 오류에 부딪히신 분은 언제든 댓글에 남겨주시면 최대한 답변드리겠습니다 :)


1. 문자열 인덱싱(Indexing)


인덱싱이란 말이 뭘까요?

인덱싱이라는 것은 무엇인가를 '가리킨다'는 의미입니다.

다시 말해서 긴 문자열에서 어떤 글자나 특정 위치를 가리키는 것을 말합니다.



위의 사진과 같이 a에 저장된 'Hello, python world!!'라는 문자열에서 각 문자마다 번호를 매겨 보겠습니다.


H

e

l

l

o

,

 

p

y

t

h

o

n

 

w

o

r

l

d

!

!

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


처음 시작하는 글자 H를 0이라는 번호에서 시작하여 ! 문자까지 다 번호를 매겨보았습니다.

그렇다면 위의 문자열에서 o는 몇 번 위치에 있을까요?

네, 위의 표에서 확인할 수  있듯이 o라는 문자는 4번, 11번, 15번 위치에 있습니다.

그럼 a라는 변수에 저장된 문자열에서 12번 위치에 있는 글자는 무엇일까요?

네, 바로 n이라는 문자가 표에서 확인할 수 있듯이 12번 위치에 있습니다.


이러한 것이 문자열 인덱싱입니다.

파이썬에서도 이러한 인덱싱을 지원하고 있습니다. 아래 사진을 통해 살펴볼까요?



여기서 주의해야 할 점은, 표에서도 볼 수 있지만 파이썬에서는 0부터 숫자를 세는 점 입니다.



1-1. 문자열 인덱싱 활용하기


위에서 알아본 바와 같이, a[9]라는 것은 a라는 문자열에서 9번위치를 말합니다.

즉, 몇가지 예시를 본다면 아래 사진과 같습니다.



그런데, [ ]여기 안에 음수를 넣으면 어떻게 될까요?

a[-1] 또는 a[-5]는 무엇을 반환할까요?



위의 사진에서 볼 수 있듯이 a[-1]은 a라는 문자열에서 뒤에서 첫번째 문자를 말하고 a[-5]는 뒤에서 다섯번째 문자를 말합니다.


즉, 표로 정리해 본다면 다음과 같습니다.


H

e

l

l

o

,

 

p

y

t

h

o

n

 

w

o

r

l

d

!

!

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

-21

-20

-19

-18

-17

-16

-15

-14

-13

-12

-11

-10

-9

-8

-7

-6

-5

-4

-3

-2

-1



2. 문자열 슬라이싱(Slicing)


인덱싱은 무엇인가를 가리키는 것을 말한다고 하였습니다. 그럼 슬라이싱은 무엇일까요?

문자열 슬라이싱은 특정 문자열에서 무엇인가를 잘라내는 것 입니다.


위에서 보았던 문장을 가져와보도록 하겠습니다.

'Hello, python world!!' 라는 문자열에서 하나의 문자만 뽑아내는 것이 아니라 world라는 단어를 뽑아내는 방법은 없을까요?

바로 아래와 같이 하면 될 것 입니다.



그런데 위의 방식으로 긴 단어를 뽑아낸다면..? 생각보다 많이 불편할 수도 있습니다.

그래서 파이썬은 위의 방법보다 더 간편하고 좋은 방법을 내장하고 있습니다.

그것이 바로 파이썬에서 슬라이싱(Slicing)이라고 부르는 것입니다.

자세한 설명을 하기 앞서, 위에서 뽑아낸 world라는 단어를 슬라이싱으로 통해 다시 확인해보겠습니다.



처음에 적었던 긴 코드보다 더욱 짧아진 코드로 'world'라는 단어가 출력된 것을 확인할 수 있습니다.

그럼 a[14:19]라는 것이 의미하는 것은 무엇일까요?

결과를 통해 유추해본다면, 14번째부터 19번째까지 문자를 출력하는 것?..

비슷하지만 정확한 의미는, 'a라는 문자열에서 14번째위치의 문자부터 19번째위치의 앞의 문자까지 출력해!' 입니다.

즉, a[시작번호:끝번호] 로써 입력하면 시작번호부터 끝번호 앞의 문자까지, 끝번호의 문자는 제외하고 출력됩니다.

몇 개의 예시를 살펴보면 아래와 같습니다.




2-1. 문자열 슬라이싱 활용하기


문자열 슬라이싱을 할때 일반적으로 a[시작번호:끝번호]를 적어야하지만, 꼭 시작번호와 끝번호를 적어야 할 필요는 없습니다.

슬라이싱을 할때 끝번호를 생략하면 시작번호부터 그 문자열의 끝까지 출력합니다.




비슷한 개념으로, 슬라이싱을 할때 시작번호를 생략하면 그 문자열의 처음부터 끝번호의 앞의 문자까지 출력합니다.




그럼, 시작번호와 끝번호 모두 생략하면 어떻게 될까요?

네, 해당 문자열의 처음부터 끝까지를 출력합니다. 즉, a == a[:] 입니다.




또한 문자열 슬라이싱에서도 인덱싱과 마찬가지로 음수를 사용할 수 있습니다.



위의 사진에서 a[3:-3]은 a[3]부터 a[-4]까지 출력되는 것이며

a[10:-5]는 a[10]부터 a[-6]까지 출력되는 것입니다.





3. 문자열 인덱싱과 슬라이싱을 활용한 예제


마지막으로 위에서 배운 인덱싱과 슬라이싱기법을 이용한 간단한 예제를 확인하겠습니다.

사용자에게 주민등록번호 앞자리 7글자를 입력받아서

~년 ~월 ~일에 태어났고, 성별은 어떻게 되는지 출력하는 프로그램을 설계합니다.

즉, 아래 사진과 같은 결과가 출력되면 됩니다.




코드는 바로 아래에 첨부합니다.


꼭 직접 구현해보시기를 바랍니다 :)




1
2
3
4
5
6
7
8
9
10
11
12
13
14
# koreaRRN.py
# 사용자에게 주민번호 7글자를 입력받아서 결과 출력하기
# Tigercow.Door
print("주민번호 앞에서부터 7글자를 입력하세요.")
RRN = input()
year = RRN[0:2]
month = RRN[2:4]
day = RRN[4:6]
sex = RRN[6]
print("입력하신분께서는 19%s년 %s월 %s일에 태어나셨고, "%(year, month, day),end='')
if (sex == '1'):
    print ("성별은 남자입니다.")
else:
    print ("성별은 여자입니다.")
cs







* 참고

점프 투 파이썬(https://wikidocs.net/book/1)


이렇게 해서 이번 포스팅에서는 파이썬에서 문자열 인덱싱과 슬라이싱에 대해서 알아보았습니다.

다음 포스팅에서는 파이썬의 문자열 포매팅과 문자열 관련 함수들에 대해서 알아보겠습니다.


블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요


안녕하세요.

지난 포스팅에 이어서, 이번엔 파이썬의 숫자형과 문자열 자료형에 대해서 알아보겠습니다.

참고 서적은 박응용씨의 '점프 투 파이썬'입니다.

또한 이번 포스팅부터 실습을 진행할텐데

제가 사용하는 파이썬 버전은 Python 3.6.2 이며 에디터는 서브라임텍스트3를 사용합니다.


1. 숫자형


숫자형이란 말 그대로 숫자로 된 자료형을 말합니다. 

숫자에는 어떤 것들이 있을까요? 잘 아시다시피 정수, 실수, 복소수 그리고 8진수와 16진수 등이 있습니다.

C 언어를 예를 들면 정수형을 표현하는데 Int형을 사용하죠. 파이썬과의 차이점을 보자면, C언어의 Int형은 대략 +21억~-21억의 범위를 가집니다. 하지만 파이썬에서는 숫자형의 범위가 존재하지 않습니다.



그럼 숫자형에서 각각의 숫자들은 어떤식으로 사용이 될까요? 하나씩 간단히 확인해보도록 하겠습니다.



1-1. 정수형(Integer)


정수형은 정수를 뜻하는 자료형을 말합니다. 다음 사진을 통해 정수형을 어떤식으로 사용하는지 볼 수 있습니다.




1-2. 실수형(Floating-point)


실수형은 정수형과 달리 소수점이 포함된 숫자들입니다. 다음 사진을 통해 실수형이 저장되고 사용되는 예시를 볼 수 있습니다.




1-3. 복소수(Complex number)


복소수는 허수를 표현하는 i와 정수 및 실수가 합쳐진 숫자입니다. 이때 파이썬에서는 i를 사용하지 않고 j 또는 J를 사용합니다.



추가적으로 파이썬에서는 복소수와 관련된 내장함수를 제공하고 있습니다.



(복소수).real

복소수의 실수부분만 반환합니다.


(복소수).imag

복소수의 허수부분만 반환합니다.


(복소수).conjugate()

복소수의 켤레복소수를 반환합니다.


abs(복소수)

복소수의 절대 값을 반환합니다.



1-4. 8진수와 16진수


8진수와 16진수를 사용할때는 숫자의 앞에 몇 진수인지 표시해주는 것이 필요합니다.

8진수의 경우, 숫자가 0o(숫자 0 + 알파벳 소문자 o) 또는 0O(숫자 0 + 알파벳 대문자 O)로 시작하면 됩니다.



16진수의 경우, 숫자가 0x(숫자 0 + 알파벳 x)로 시작하면됩니다.




2. 연산자


위에서 알아본 숫자형들을 연산할때 사용하는 연산자가 있습니다.

기본적으로 사칙연산자, 제곱을 나타내는 연산자, 나머지를 반환하는 연산자, 몫을 반환하는 연산자를 알아보도록 하겠습니다.


2-1. 사칙연산자


많은이들이 알다시피 사칙연산은 더하기(+), 빼기(-), 나누기(/), 곱하기(*)를 말합니다.

파이썬에서도 역시 사칙연산을 지원하고 사용 예시는 아래 사진과 같습니다.




2-2. 제곱을 나타내는 연산자


흔히들 제곱을 나타낼 때는 ^ 기호를 쓰죠. 예를 들면 2의 3승을 나타낼때는 2^3 이런식으로 말이죠.

파이썬에서는 조금 다르게 ^ 기호 대신 **를 사용합니다. 아래의 사진을 보고 어떻게 사용하는지 확인하세요.




2-3. 나머지를 반환하는 연산자


파이썬에서 나머지를 반환하는 연산자는 %를 사용합니다.

나머지를 반환하는 연산자란, 나눗셈의 결과에서 나머지만을 반환하는 연산자를 말합니다.

예를 들어 17이란 숫자를 5로 나누면 몫은 3이고 나머지는 2입니다.

즉, 17 % 5 = 2 입니다.




2-4. 몫을 반환하는 연산자


파이썬에서 몫을 반환하는 연산자는 //를 사용합니다.

몫을 반환하는 연산자는 말 그대로 나눗셈을 진행하고 결과에서 몫만을 반환하는 연산자를 말합니다.

예를 들어, 17이란 숫자를 5로 나누면 몫은 3이고 나머지는 2입니다.

즉, 17 // 5 = 3 입니다.





3. 문자열 자료형


문자열(String) 자료형이란 문자, 단어, 숫자 등으로 구성된 모든 문자들의 집합을 말합니다.

문자열은 따옴표로만 둘러 쌓여 있으면 됩니다. 문자열을 구성하는 방법은 아래에서 자세히 확인하도록 하겠습니다.

이전에 문자열의 예시를 보면 아래 사진과 같습니다.




3-1. 문자열 만들기


그럼, 이러한 문자열 자료형은 어떻게 만들까요?

총 4가지의 방법이 있습니다. 왜 4가지 씩이나 있는지에 대해서는 아래에서 설명드리겠습니다.


단일 큰따옴표 사용하기


단일 작은따옴표 사용하기


큰따옴표 3개연속 사용하기


작은따옴표 3개연속 사용하기




3-2. 문자열 만들기 방법이 4가지인 이유


3-1에서 문자열을 만드는 4가지 방법에 대해서 알아보았습니다.

헌데 왜 4가지 씩이나 있을까요?

여러가지 이유가 있겠지만, 저자는 아래의 두가지 이유를 설명합니다.


1. 문자열 안에 따옴표를 포함시키고 싶을 때

2. 여러줄일 문자열을 변수에 대입하고 싶을 때


첫 번째 이유, '문자열 안에 따옴표를 포함시키고 싶을 때'에 대해서 보겠습니다.

만약, 'Hello, what's your name?' 을 문자열에 저장하려면 어떻게 해야할까요?

또는, "I said, "beomwoo"."를 문자열에 저장하려면 어떻게 해야할까요?

일단 한번 시도해보면 아래와 같은 오류가 뜨게 됩니다.


왜 오류가 뜰까요?

바로, 첫 번째 문장에서 작은따옴표로 문자열을 만들었는데 문자열 중간에 작은따옴표가 존재하기 때문이며

같은 이유로 두번째 문장에서는 큰따옴표로 문자열을 만들었는데 문자열 중간에 큰따옴표가 있기 때문입니다.

즉, 문자열 중간에 작은따옴표 또는 큰따옴표를 입력하기 위해 각각의 방법이 존재합니다.

그렇다면 위에서 저장하려던 문자열을 오류없이 저장하려면 어떠한 방법이 있을까요?

 'Hello, what's your name?'  대신,

"Hello, what's your name?" 및 '''Hello, what's your name?''' 및 """Hello, what's your name?""" 이 존재하고

"I said, "beomwoo"." 대신,

'I said, "beomwoo".' 및 '''I said, "beomwoo".''' 및 """I said, "beomwoo".""" 이 존재할 것입니다.


물론 추가적으로 따옴표를 사용하기 위해서 이스케이프를 이용하는 방법도 존재합니다.

이스케이프에 대해서는 두번째 이유를 확인하고 설명드리겠습니다.


두번째 이유, '여러줄인 문자열을 변수에 대입하고 싶을 때'를 보겠습니다.

문자열이 항상 한 줄으로만 존재하지는 않습니다. 예를 들어,

Hello, world!

Nice to meet you!

와 같은 문자열을 변수에 저장해야 할 수도 있습니다.

이럴땐 어떻게 할까요?

이럴 경우 작은따옴표 및 큰따옴표를 단일로 사용할 경우 오류가 발생합니다.



이럴땐 위의 사진과 같이 큰따옴표 3개 또는 작은따옴표 3개를 이용해서 문자열을 만들어야 합니다.

그런데 위의 사진에서 성공적으로 출력된 결과를 보면,

'Hello, world!\nNice to meet you!'

임을 확인할 수 있습니다.

나는 분명히 엔터를 입력해서 두 줄의 문자열을 저장했는데 출력결과는 한줄이고 가운데에 이상한 문자, \n가 삽입되어있네요?

여기서 \n가 바로 이스케이프 코드 입니다.



3-3. 이스케이프 코드


이스케이프 코드란 프로그래밍을 할 때 프로그래머가 편히 사용할 수 있도록 미리 정의해 놓은 문자의 조합입니다.

즉, 작은따옴표는 문자열을 만들때 사용될 수 있으니까 너가 작은따옴표를 문자열 안에서 사용하려면 그냥 ' 이걸로 사용하지말고 \' 이렇게 사용해. 라는 식으로 정의해둔 것 입니다.

그렇다면 위에서 확인한 \n는 어떠한 의미를 가진 이스케이프 코드일까요?

예상하신 것 처럼 enter를 의미하는 이스케이프 코드입니다.

각각의 이스케이프 코드와 그 의미를를 아래의 표로 정리하였습니다.

 코드

설명 

\n

개행(줄바꿈)

\t

수평 탭

\\

문자 "\"

\'

단일 인용부호( ' )

\"

이중 인용부호( " )

\r

캐리지 리턴

\f

폼 피드

\a

벨 소리

\b

백 스페이스

\000

널 문자



4. 문자열 연산하기


파이썬에서 볼 수 있는 또 다른 특징 중에 하나입니다.

파이썬은 다른 언어와 달리 문자열 자체를 더하거나 곱하는 연산이 가능합니다.


4-1. 문자열 더하기

문자열에서 더한다는 의미는, 두개 이상의 문자열을 이어서 붙인다는 의미로 받아들이시면 됩니다.

아래 예제를 보시면 바로 이해하실 것 입니다.



4-2. 문자열 곱하기

그렇다면 문자열 곱하기는 어떤 의미를 가질까요?

예를 들어 3 * 5 라는 연산은 3을 5번 더하는 즉, 3 + 3 + 3 + 3 + 3 으로 생각할 수 있습니다.

어느정도 이해가 되시나요? 아래 예제를 통해 바로 확인해보겠습니다.




이러한 문자열 더하기와 곱하기는 추후 에디터를 이용하면서 많이 사용될 수 있으니 간단하지만 꼭 익혀두시기를 바랍니다.



이렇게 해서 파이썬의 숫자형과 문자열 자료형의 기본적인 내용을 알아보았습니다.

다음 포스팅에서는 문자열에서 자주 사용되는, 문자열 인덱싱과 슬라이싱에 대해서 공부해보겠습니다.

내용에 대한 피드백이나 궁금한 점은 댓글을 이용해주세요 :)

블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요


안녕하세요. 문범우입니다.

최근 파이썬(python)을 이용해서 다양한 웹 프레임 워크도 공부하고, 학교에서 진행하는 이론적인 내용들을 실습할 때 파이썬으로 코드를 작성하다 보니 기초에 대한 부족함이 느껴지네요.

그래서 처음 파이썬 시작할때 샀던 책을 아예 처음부터 제대로 정독해보기로 마음먹었습니다.

책은 박응용님께서 지으신 '점프 투 파이썬'이란 책입니다.

해당 책은 WikiDocs에 오픈되어 있으니 여기를 클릭하셔서 온라인으로도 보실 수 있습니다.

포스팅은 시간날때마다 공부하고 정리하는 느낌으로 진행할 예정이고 책에서 공부한 내용들을 바탕으로 응용한 예제까지 더해서 코드를 정리하려 합니다.

궁금하신 점이나 기타 의문사항은 댓글 및 이메일(doorbw@outlook.com)으로 연락주시면 감사하겠습니다. :)



1. 파이썬(python)이란 무엇인가?


파이썬(python)은 1990년 귀도 반 로섬이라는 개발자에 의해서 개발된 인터프리터 언어입니다.

여기서 인터프리터란, 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말합니다.

인터프리터 언어와 상대적인 개념으로 컴파일러 언어가 존재합니다.

컴파일러 언어는 코드의 전체를 모두 변환하여 실행하며,

인터프리터 언어는 위에서 설명드린 바와 같이 소스 코드를 한 줄 단위로 변환하고 실행하는 과정을 반복합니다.

컴파일 언어로는 C, C++, JAVA 등이 있으며 인터프리터 언어로는 python, HTML, SQL, Javascript 등이 있습니다.


파이썬은 아직 한국에서 대중적으로 많은 이용이 되고 있지는 않지만, 해외에서는 교육 목적뿐 아니라 실무에서도 많이 사용되고 있습니다.

많은 사람들이 이용하는 파일 동기화 서비스 중 하나인 드롭박스(Dropbox) 나 웹 프레임 워크 중 하나인 장고(Django) 등이 예시가 될 수 있습니다.



2. 파이썬의 장점 및 특징


물론 각각의 언어가 가지고 있는 특징과 장점들이 존재하겠지만 그 중에서도 파이썬이 보일 수 있는 점들을 몇가지 확인해보겠습니다.


파이썬은 인간다운 언어입니다.

이후 이론을 공부하며 예제를 확인하면서도 아실 수 있겠지만 파이썬의 코드를 확인하시면 마치 영어문장을 써놓은 것처럼 비전공자 또한 읽기가 쉽게 되어 있습니다. 물론 모든 코드가 그런 것은 아니겠지만 상대적으로 다른 언어들과 비교하였을때 제일 인간다운, 읽기 쉬운 언어라고 볼 수 있습니다.


파이썬은 쉽고, 강력합니다.

파이썬의 문법을 공부하다보면 참 쉽고, 간단하다고 느낄 때가 많습니다. 파이썬은 문법 자체가 아주 쉽고 간결하며 사람의 사고 체계와 매우 닮아 있습니다. 

그러함에도 불구하고 파이썬을 통해 매우 다양한 것들을 만들어 낼 수 있습니다. 시스템 유틸리티 제작 및 GUI 프로그래밍은 물론이고 웹 개발 또한 할 수 있으며 pygame이라는 모듈을 사용하여 간단한 게임 또한 손쉽게 만들어 볼 수 있습니다.


파이썬의 특징이나 파이썬으로 할 수 있는 일은 이 외에도 매우 많습니다.

추후 공부하면서 관심이 가는 분야나 궁금한 점에 대해서는 추가적으로 찾아보면서 공부하셔도 좋을 것 같습니다.

또한 댓글을 남겨주시면 아는 선에서 최대한 정보를 드려보도록 하겠습니다. :)


3. 파이썬 설치하기


파이썬을 설치하는 것은 아주 간단합니다. 따라서 설치방법에 대해서는 따로 설명드리지 않고 넘어가겠습니다.

많은 분들이 정리를 잘 해놓으시기도 했고, 공식문서나 점프 투 파이썬의 내용을 참고하셔도 좋을 것 같습니다.

오류가 발생하는 등의 문제점에 대해서는 댓글로 알려주시면 답변드리겠습니다.


이렇게 해서 오늘 파이썬 학습에 대한 오프닝을 진행하였습니다.

다음 포스팅에서는 파이썬의 숫자형과 문자열 자료형에 대해 공부해보도록 하겠습니다.


블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요


학교에서 시스템 프로그래밍을 C 언어로 공부하고 있습니다.

공부하면서 필요한 C 언어 개념들을 조금씩 정리해보려고 합니다.

글 내용이나 각각의 글들의 앞뒤가 없을 수 있으니.. 참고해주시고 궁금하신 점이나 잘못된 점들은 언제든지 피드백해주세요.

먼저 오늘은 C언어에서 사용되는 구조체의 개념에 대해서 공부해보겠습니다.



1. 구조체(struct)

먼저 아래 코드를 통해서 구조체의 기본적인 형태를 알아볼게요.


1
2
3
4
5
6
7
struct (구조체 이름)
{
    int var_1;
    float var_2;
    bool var_3;
    ...
};
cs


위의 코드는 구조체의 기본적인 형태를 나타냅니다. 
구조체는 struct 라고 나타내어 그 뒤에 (구조체 이름)이 들어가고 그 뒤에 {구조체의 내용}이 들어갑니다.
예를 들어, 복소수를 표현 하기 위해 아래와 같이 구조체로 나타낼 수 있습니다.

1
2
3
4
struct complex{
    float real;
    float imag;
};
cs


complex 라는 구조체는 float 자료형인 real 과 imag 변수를 내용으로 가지고 있습니다.


헌데 구조체를 만들 때 구조체 이름을 생략하는 경우가 있습니다. 먼저 예제를 확인하시죠.


1
2
3
4
struct {
    float real;
    float imag;
} var_complex;
cs


위의 코드에서는 (구조체 이름) 이 생략되어 있습니다.

만약 구조체를 지속적으로 사용할 필요가 없고, 딱 한번만 선언해서 사용할때 위와 같은 형식으로 구조체를 만듭니다.

다시말해서 위의 코드의 구조체는 지속적으로 사용되는 것이 아니고 var_complex 라는 이름의 변수로

해당 구조체를 한번만 사용하는 것입니다.


그럼 이름이 있는 구조체의 경우에는 구조체를 어떻게 선언해서 사용할까요?


1
struct complex var_complex;
cs


위의 코드는 complex 라는 이름의 구조체를 var_complex 라는 이름의 변수로 선언한 것 입니다.

헌데 이런식으로라면 구조체를 선언할때마다 struct를 써야하는 번거로움이 생길 수 있습니다.

이를 해결하기 위해서 아래와 같이 typedef를 사용할 수 있습니다.


1
typedef struct complex COMPLEX;
cs


위의 코드가 말하는 것은, struct complex 라는 것을 COMPLEX 로 새로 정의할거야! 입니다.

즉, 해당 코드를 통해 다음부터 구조체를 선언할 때 아래와 같이 간단히 선언할 수 있습니다.


1
COMPLEX var_complex;
cs


우리가 흔히 int var; 처럼 int 형 변수 var를 선언하는 것과 같이 사용할 수 있는 것입니다.


또한, typedef를 이용하면 구조체를 만들 때 부터 구조체형의 이름을 지정할 수 있습니다.

아래 코드를 확인해볼까요?


1
2
3
4
5
typedef struct complex { 
    float real; // 멤버변수
    float imag;
}COMPLEX;
COMPLEX var_complex;
cs


위의 코드와 같이 구조체를 만들때 맨 앞에 typedef 를 이용하여 구조체 내용의 뒤에 구조체형의 이름을 지정해주면

이후 해당 구조체를 선언할때 struct ~ 를 생략하고 간편히 선언이 가능합니다.


구조체를 선언하고 사용하는 방법이 다양하게 있는데 헷갈리지 않도록 구분하여 이해하시길 바랍니다.



2. 구조체를 전달 받는 함수


구조체는 리턴이 될때 어떤식으로 리턴이 될까요?

C 언어에서 배열(array)는 해당 배열의 주소값으로 리턴이 됩니다.

하지만 구조체는 그렇지 않고 구조체의 값 자체가 리턴이 됩니다.

이럴때, 함수에 구조체를 그대로 전달한다면 무엇이 문제가 될까요?

만약 구조체의 값(내용)이 매우 크다면? 함수는 해당 값을 받고 처리하는 데 있어서 매우 비효율 적이 됩니다.

이에 따라서 구조체를 함수에 전달할 때에는 주로 '포인터'를 사용하게 됩니다.


아래 두 함수를 통해 차이점을 확인해 볼게요.


1
2
3
4
5
6
7
8
9
// 구조체를 그대로 전달 받는 함수
void printComplex_1 (Complex c){
    printf("real = %f, imag = %f\n", c.real, c.imag);
}
 
// 구조체 포인터를 전달 받는 함수
void printComplex_2 (Complex* ptr){
    printf("real = %f, imag = %f\n", ptr->real, ptr->imag);
}
cs


먼저 1~4 번 라인의 함수는 구조체를 그대로 전달 받는 함수이며

6~9번 라인의 함수는 구조체를 포인터로써 전달 받아 사용하는 함수입니다.

위에서 말씀드렸듯이, 구조체를 그대로 전달 받는 함수는 매우 비효율적이기에 아래와 같은 포인터를 통해 구조체를 전달 받는 함수를 많이 사용합니다.




블로그 이미지

Tigercow.Door

Web Programming / Back-end / Database / AI / Algorithm / DeepLearning / etc

댓글을 달아 주세요