본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 프로그래밍 강좌/Python [리뉴얼중]
  3. [파이썬 강좌] #3-1 파이썬 훑어보기

[파이썬 강좌] #3-1 파이썬 훑어보기

· 댓글개 · KRFile

서론

파이썬이라는 프로그래밍 언어를 사용하면 컴퓨터 구조에 대해 자세히 알지 못해도, 쉽게 나만의 프로그램을 제작할 수 있다고 소개해드렸습니다. 오늘은 파이썬에 대해 심층적이고 깊게 알아보기 이전, 얇고 넓게 파이썬의 기능을 사용해보는 시간을 가지겠습니다.

 

이전 글에서 VSCode로 코딩을 한다고 알려드렸고, 파이썬 설치 및 필요한 확장 프로그램 설치에 대해 이미 다뤘으므로 환경 구축은 다 되었다고 가정하고 진행을 하도록 하겠습니다.

 

일단은 오늘 맛보기만 전체적으로 할 예정이므로 자세히 이해하실 필요 없고 아 이렇게 쓰면 이렇게 컴퓨터가 실행해주는구나!~ 정도만 이해하시고 넘어가시면 되겠습니다

 

코드 실행 방법

VSCode를 먼저 실행하시면 다음과 같이 폴더 열기 버튼이 보이실 겁니다.

 

또는 파일의 폴더 열기 버튼을 누르셔도 무방합니다.

 

그럼 폴더를 여는 창이 나올건데요. 이 폴더가 바로 여러분이 파이썬을 연습할 공간입니다. 이 폴더에서 파이썬 코드를 작성하고, 실행해볼 것 입니다. 저는 내 문서의 Python Lecture 폴더로 지정해서 폴더를 열도록 하겠습니다.

개인이 원하는 대로 파이썬을 연습할 폴더를 지정하고 폴더 선택을 눌러주세요!

 

그러면 왼쪽에 보시다 싶이 Python Lecture 폴더가 열린 걸 볼 수 있습니다. 원래 폴더 이름은 대문자가 아니지만, VSCode에서는 폴더를 전부 대문자로 표시해주기 때문에 그렇습니다. 크게 중요한 부분은 아닙니다.

 

그리고 이제 왼쪽 탭에서 새 파일 버튼을 눌러서 파일을 하나 생성해줄겁니다.

 

main.py 라는 파일을 생성해줍니다. 코딩을 위해선 당연히 프로그램 코드를 파일로 적어야 하며, 프로그래밍 언어 별로 특수한 확장자를 이용해서 코드 파일을 작성할 수 있습니다.

파이썬 프로그래밍을 위한 파이썬 코드 파일은 .py 파일로 생성을 하시면 됩니다.

 

일반적으로 프로그래밍 시 처음 실행시키는 파일은 관례상 "main" 이라는 이름을 붙입니다.

결론적으로 main.py를 적으신 후 엔터를 입력해 파일을 생성합니다.

 

파이썬 코드 파일을 생성하면 이런식으로 자동으로 우리가 생성한 main.py가 열림을 확인할 수 있습니다.

 

print("Hello World")

이 곳에 다음과 같이 작성합니다. 이 명령어는 컴퓨터야~ 모니터에 Hello World라는 것 좀 출력(print)해줘! 라는 뜻입니다. print 라는 영어의 뜻이 출력하다 입니다.

 

이제 작성한 코드를 실행해야 합니다.

코드를 실행하는 방법은 2가지가 있습니다.

 

1. F5를 눌러서 디버그 모드로 실행

2. Code Runner로 릴리즈 모드로 실행

 

어려운 용어가 많이 나왔지만 F5로 실행하면 조금 느린 대신에, 우리가 잘못된 코드를 작성했을 때 오류가 난 곳에 바로 멈춰서 이동해, 오류가 났다고 알려주는 모드고

 

Code Runner (이 앞전에 실행한 VSCode 확장 프로그램) 로 실행하면 F5로 실행하는 것보다 조금 더 빠른 대신에 오류가 나도 그 곳으로 자동으로 이동하지 않고, 오류 메세지만 띄우고 프로그램이 종료됩니다.

 

일단은 연습하는 입장에서는 F5로 실행하는게 좋습니다.

 

F5를 눌러주면 이러한 창이 뜨는데 Python 파일을 눌러서 파이썬 코드를 실행해줍니다.

 

실행해보시면 이런식으로 Hello World라는 것이 터미널 부분에 출력된 것을 볼 수 있습니다.

축하합니다! 모니터에 문자를 찍는 첫 번째 프로그램을 만드셨습니다 :)

 

프로그래밍 언어를 배울때 관례적으로 가장 처음에 하는게 모니터에 "Hello World" 라는 문구를 출력해보는 것 입니다. 대부분의 프로그래밍 언어의 대부격이라고 할 수 있는 C언어의 창시자 데니스 리치가 쓴 "The C Programming Language" 교재의 첫 번째 예제가 화면에 "Hello, world!"를 출력하는 것이었고, 이것이 유명해지면서 모든 프로그래밍 언어의 첫번째 예제로 굳어지게 되었습니다.
출처

 

오류 검출이 필요 없고 빠른 실행을 원하신다면 F5가 아닌 Code Runner 를 이용해 실행해주시면 됩니다.

코드에 오른쪽 클릭을 하시고 Run Code를 실행하면 파이썬 코드가 빠르게 실행됩니다. (단 오류가 발생해도 그 곳으로 순간이동 해주거나 이런 편의기능은 없습니다.)

 

우선 본 글에선 실행을 할 때 전부 F5로 실행할 것입니다. Code Runner 로 실행하는건 여러분이 숙련 되셨을 때 사용하시면 됩니다!

 

수학 연산 해보기

print("Hello World")

아까 전에는 다음과 같은 코드를 적어서 모니터에 "Hello World" 라는 문자열을 출력했습니다. 사실 "를 왜 붙이는 지 print를 쓰고 괄호는 왜 쓰는지 잘 모르겠지만 일단은 받아들이고 넘어가보자구요. 오늘은 자세히 심층 탐구하는 시간은 아니니깐요 ㅎㅎ

 

사실 print 로 출력할 수 있는건 무한합니다. 이번엔 수학에서 사칙 연산의 결과를 한 번 출력해보겠습니다.

 

print(1+1)
>>> 2

1+1 의 결과를 출력하고 싶으면 다음과 같이 실행하면 됩니다. 간단하죠?

1+1에 대한 결과로 2가 모니터(터미널)에 출력되는걸 볼 수 있습니다.

 

print(2 * 3)
print(6 / 4)
print(6 - 2)
print(4 + 4)

>>>
6  
1.5
4
8

이번엔 좀 많은 코드를 한 번에 적어봅시다.

이 코드를 실행시키면 순서대로 

 

4개의 연산 결과가 나옴을 알 수 있습니다. 대부분, 아니 99% 이상의 프로그래밍 언어가 코드를 처음 시작부터, 위에서 아래로 한줄씩 실행합니다. 파이썬의 경우에도 마찬가지입니다. 위 코드의 경우 print(2 * 3)를 첫 번째로 실행, 6 / 4를 두 번째로 실행, 6 - 2를 3번째로 실행, 4+4 를 네 번째로 실행합니다.

 

위에서 적은대로 순서대로 실행시키는건 언뜻보기엔 당연하지만 프로그래밍을 처음 하시는 분들은 햇갈리실 수 있습니다. 내가 적은 코드는 위에서 아래대로 순차 실행된다! 이 대전제를 반드시 기억하시길 바랍니다.

 

그리고 print() 라는 함수는 출력을 한 번 하면 엔터를 자동으로 쳐줍니다.

4번 출력을 요청했는데, 각 출력별로 끝에 엔터가 쳐져서 개행된것을 볼 수 있습니다.

 

print(2 * 3, end = "")
print(6 / 4, end = "")
print(6 - 2, end = "")
print(4 + 4, end = "")

사실 엔터를 마지막에 자동으로 쳐주는게 마음에 안들 수 있습니다. 자동 엔터를 지울수는 없을까요? 당연하지만 가능합니다.

 

print 함수에서 출력할 것 다음에 콤마(,) 를 찍고 end = "" 라는 코드를 추가합니다.

 

print(2 * 3, end = "")

위 코드는 컴퓨터야! 내가 2 * 3 이라는 수식을 계산해서 결과를 출력하고 싶은데, 끝 부분에 엔터가 들어가는게 마음에 안들어. 끝 부분 (end) 의 엔터를 없는 문자 ("") 로 할 수 없을까? 라는 의미입니다.

 

아까 보셨다 싶이 Hello World라는 문자들을 출력하기 위해선 쌍따옴표로 묶어줬습니다. 파이썬에서 여러 문자들, 즉 문자열 (문자들의 나열) 을 나타내기 위해 쌍따옴표로 묶습니다.

 

현재는 빈 문자열을 나타내야 하므로 내용은 적지 않고 쌍따옴표로 묶어 ""가 된 것 입니다.

 

print(2 * 3, end = "")
print(6 / 4, end = "")
print(6 - 2, end = "")
print(4 + 4, end = "")

>>> 61.548

다시 돌아와서 해당 코드를 실행하면 "61.548" 이 결과로 나오는 것을 알 수 있습니다. 결과가 61.548 이라는 숫자가 아니라 6, 1.5, 4, 8 이라는 결과가 각각 띄어쓰기 없이 출력되어 나온 결과입니다.

 

 

print(2 ** 10)
>> 1024

사칙연산 이외에도 $2^{10}$ 같은 제곱 연산을 하고 싶다면 ** 기호를 이용하면 됩니다. ** 같이 수학 연산에 사용하는 기호를 조금 있어보이는 말로 연산자(Operator) 라고 표현합니다. 연산을 하는 아들. 연산을 하는 놈! 이라는 뜻이죠.

 

print(10 // 2) 
print(10 % 3)

>>>
5
1

이외에도 수학에서 몫과 나머지를 구하고 싶다면 // 라는 몫 연산자와 % 라는 나머지 연산자를 이용하면 됩니다.

10을 2로 나누면 몫이 5고, 10을 3으로 나누면 나머지는 1이죠. 정확하게 계산됩니다.

 

문자열 출력하기

print("Hello World")

이 코드는 제일 처음에 알아본 Hello World라는 문구를 출력하는 코드였습니다.

보다 싶이 이 Hello World 라는 여러 문자들은 쌍따옴표(") 로 묶여있습니다.

 

파이썬에서 따옴표로 묶인 여러 문자들을 "문자열" 이라고 합니다. 문자들의 나열이라는 뜻입니다.

여기서 큰따옴표가 아닌 따옴표로 묶인 문자들을 문자열이라고 하는 이유는 파이썬은 쌍따옴표 뿐만이 아니라 홑따옴표 역시 문자열로 취급하기 때문입니다.

 

따라서

 

print("Hello World!")

이렇게 쌍따옴표로 묶인 Hello World! 라는 문자열을 출력하는 방법과

 

print('Hello World!')

홑따옴표로 묶인 Hello World! 라는 문자열을 출력하는 방법은 완전히 동일한 표현입니다.

 

파이썬에서는 쌍따옴표와 홑따옴표를 구분하지 않고 문자열을 사용할 수 있게 설계되었습니다.

그러므로 코딩을 하면서 문자들을 여러개 출력해야 하신다면, 쌍따옴표로 묶거나 홑따옴표로 묶거나 하는건 전부 여러분의 자유입니다.

 

print("Hello World!')
print('Hello World!")

다만 이런식의 코드는 실행되지 않습니다. 쌍따옴표로 시작했으면 반드시 쌍따옴표로 끝나야 하고, 홑따옴표로 시작했으면 반드시 홑따옴표로 끝나야 합니다. 짝이 맞아야 제대로 코드가 작동합니다.

 

수학에서 계산할 때 괄호를 칠때도 양쪽에 씌어야지, 한쪽에만 씌우진 않지요? 이것도 마찬가지입니다.

 

그러면 "Big" Hat 이라는 문구를 파이썬으로 출력하려면 어떻게 해야할까요? (쌍따옴표 포함하여 출력 시)

 

print(""Big" Hat")

>>>
  File "C:\Users\pgh26\Documents\Python Lecture\main.py", line 1
    print(""Big" Hat")
          ^^^^^
SyntaxError: invalid syntax. Perhaps you forgot a comma?+

파이썬을 처음 시작한 A군이 다음과 같이 코드를 작성했습니다.

A군 : 파이썬에서 따옴표로 묶으면 문자열이라고 했지? "Big" Hat 이라는 걸 또 쌍따옴표로 묶으면 되겠구나?

아쉽게도 다음 코드를 실행하면 SyntaxError (문법 오류) 가 발생하며 코드가 제대로 실행되지 않습니다.

 

컴퓨터(파이썬 인터프리터)는 아쉽게도 쌍따옴표 안에 또 다시 쌍따옴표가 오는 걸 제대로 이해하지 못합니다. 일반적으로 쌍따옴표 안에는 다시 쌍따옴표를 쓸 수가 없습니다. 왜냐면 쌍따옴표를 이미 파이썬에서 문자열을 감싸는 도구로 사용하기로 했기 때문이죠. 

 

print('"Big" Hat')

하지만 파이썬에는 문자열을 나타내는 방식이 쌍따옴표만 있지 않습니다. 작은 따옴표도 있죠! 지금 발생한 문제는 전체 문자열을 쌍따옴표가 아니라 홑따옴표로 감싸주면 문제없이 해결됩니다.

 

컴퓨터는 홑따옴표를 시작에서 찾고 끝에 있는지 검사합니다.

끝에 잘 있군요. 검사는 제대로 통과하고 그 안의 "Big" Hat 이라는 문자열이 제대로 출력됨을 알 수 있습니다.

 

반대로 Jerry's Hat 같이 문자열에 홑따옴표가 포함된 경우 홑따옴표로 감싸주면 오류가 발생하므로 이번엔 쌍따옴표로 묶어줘야 제대로 출력됩니다.

 

print("Jerry's Hat")

성공입니다 :)

 

하지만 이런 요구도 있을 수 있습니다.

??? : 아니 그냥 쌍따옴표 안에 쌍따옴표 넣어서 출력하고, 홑따옴표 안에 홑따옴표 넣어서 출력할 수 없어?

 

사실 이것도 가능합니다. 다만 코드가 좀 지저분해집니다.

 

print("\"Big\" Hat")

아까 작동하지 않던 "Big" Hat을 출력하는 코드. Big 양 옆 쌍따옴표에 백슬래시(\) 기호를 붙이면 문제없이 출력됨을 알 수있습니다.

 

 

아까는 쌍따옴표 자체가 문자열을 감싸는 용도로 사용되는 특수한 기호기 때문에 쌍따옴표 안에 쌍따옴표를 넣는게 난감한 상황이였습니다. 프로그래밍 언어에서는 이를 타개하기 위해 이스케이프 문자(Escape Character) 이라는 개념을 사용합니다.

 

예를 들어서 지금과 같이 쌍따옴표가 문자열을 묶는 용도가 아니라 그냥 모니터에 출력만을 하고 싶을때 보통 백슬래시(\) 기호를 앞에 붙여서 \" 와 같은 형태로 나타내는 것 입니다.

 

이렇게 되면 컴퓨터는 \" 를 문자열을 묶는 특수한 쌍따옴표로의 용도가 아닌, 그냥 출력을 위한 쌍따옴표의 용도로 봐서 쌍따옴표 안에 쌍따옴표를 출력할 수 있게 됩니다.

 

이미지 출처 : https://velog.io/@skw0702/Python-%EA%B8%B0%EC%B4%88

이런식으로 출력을 원하는데, 이 문자가 이미 예약되어 사용되고 있는 경우 앞에 백슬래시를 붙여서 나타내는 문자를 이스케이프 문자라고 표현하며 종류는 위와 같이 있습니다.

 

물론 꼭 순수한 출력만을 원하는게 아니라 \n는 엔터를 출력하기로 약속한 것처럼 조금 특수한 형태의 이스케이프 문자열도 있습니다. 어쨌던 백슬래시를 앞에 붙여서 나타내는 이러한 문자들을 이스케이프 문자라고 한다. 꼭 기억해주시면 되겠습니다.

(\" , \' 이 백슬래시 + 문자 해서 2글자가 아니라 세트로 1글자 존재한다 라고 이해하시면 됩니다.)

 

print('Jerry\'s Hat')

비슷하게 홑따옴표 안에 홑따옴표를 출력하고 싶은 경우 홑따옴표를 다시 이스케이프 문자 처리해서 출력하면 되겠습니다. 하지만 이스케이프 문자는 백슬래시를 앞에 항상 붙여야 해서 지저분하며 읽기도 어렵습니다.

 

되도록 쌍따옴표, 홑따옴표 출력을 원하신다면 쌍따옴표는 홑따옴표로 감싸고, 홑따옴표는 쌍따옴표로 감싸주세요.

 

문자열과 숫자의 차이 알기

print(1+1)

이 코드를 실행하면 1+1이 계산되어 2가 실행됩니다. 앞에서 확인했으니 잘 알고 계시죠?

 

print("1+1")

 그러면 이건 어떻게 될까요? 똑같이 2가 나올까요..? 일단은 앞에서 쌍따옴표나 홑따옴표로 묶으면 문자열이라고 했으니깐 1+1 은 통째로 문자열이 되겠네요. 

 

위 코드는 실행하면 2가 나오지 않고 그냥 1+1 이라는 문자열이 출력됩니다.

 

파이썬에선 일반적으로 쌍따옴표 또는 홑따옴표로 묶인 데이터만 문자열로 취급합니다.

 

print(1+1)

따라서 위 코드 1+1은 따옴표로 묶여 있지 않으므로 각각은 숫자로 인식되며 1 + 1을 계산해 결과를 출력해라 라는 명령이 되는것이고

 

print("1+1")

위와 다르게 해당 코드는 1+1 이 통째로 쌍따옴표로 묶여져 있으므로 1+1 이라는 문자열을 통째로 출력해라! 가 되는 것입니다. 재미있죠? 실제로 문자열만을 출력하라고 지시한것이라 계산은 전혀하지 않습니다.

 

조금 비유를 들어보자면 print(1 + 1) 은 실제로 우리한테 선생님이 1 + 1 이거 계산해서 답 어떻게 나오는지 말해봐. 라고 명령한것이고 print("1+1") 은 너 1+1 이라는 이 계산식 칠판에 그대로 적어서 출력해봐. (계산은 할필요 없고) 가 되는 것입니다.

 

print(1)
print("1")

그러면 위 두줄의 코드는 어떤 차이를 가질까요?

따옴표로 묶이지 않는 1의 경우 숫자일 것이고, 밑에 따옴표로 묶인 1의 경우 문자인 숫자가 될 것 입니다.

(문자인 숫자라고 해서 좀 햇갈리실 수 있는데 그냥 숫자를 문자열 형태로 나타낸 거라고 보면 됩니다. 계산할 수 있는 숫자는 아니고 그냥 관상용도지요.)

 

print(1 + 1)
print("1" + "1")

다음으로 해당 코드의 실행 결과를 예측해보겠습니다.

일단 위에서 아래로 실행한다고 했으니깐.. 첫 번째줄은 2가 나올거고 두 번째줄은..?

일단 숫자처럼 생기긴 했지만 따옴표로 묶여있으니 결론적으로 문자열 2개를 더하는 셈이 됩니다. 그렇죠?

 

print(1 + 1)
print("1" + "1")

>>>
2
11

코드를 직접 실행해보면 알겠지만 2번째 줄에 대한 결과는 11입니다. 문자열 1하고 문자열 1을 더하면 11이 되는건가? 이 기괴한 연산은 뭐지? 라고 하실 수 있겠지만 이건 수학적으로 계산된게 아니구요 단순히 두 문자열이 합쳐진 것입니다.

 

print("hello" + "world")
>>> helloworld

파이썬에선 재미있게도 문자열 2개를 덧셈(+) 하면 두 문자열이 합쳐져 버립니다. 결합(concat) 되어버린다는 것이죠!

아까 "1" 하고 "1" 을 더한 것도 "11" 이라는 문자열로 합쳐버린 것 이랍니다.

 

이제 문자열과 숫자의 차이를 아시겠나요?

축하합니다. 여러분은 벌써 자료형의 개념을 어느정도 이해하신게 됩니다.

자료형이 뭔지는 나중 시간에 다루겠지만 어쨌던 이 개념은 매우 중요합니다.

 

print("1" + 1)

마지막으로 중요한 사실. 숫자 끼리 더하면 계산이 되고, 문자 끼리 더하면 합쳐지는건 알았습니다. 그러면 문자랑 숫자를 더하면..? 

Traceback (most recent call last):
  File "C:\Users\pgh26\Documents\Python Lecture\main.py", line 1, in <module>
    print(1 + "1")
TypeError: unsupported operand type(s) for +: 'int' and 'str'

아쉽게도 오류가 납니다. 파이썬에선 숫자랑 문자열을 더하는게 허락되지 않습니다. 사실 숫자랑 문자열을 더하는 걸 또 만들면 프로그래밍을 하는 저희 입장에서는 굉장히 머리가 아파질 겁니다. 그래서 언어 차원에서 애초에 파이썬은 숫자와 문자를 더할 수 없습니다. 중요한 사실이니 이것 역시 기억해주세요 :D

 

다음편에서 계속됩니다...

SNS 공유하기
💬 댓글 개
이모티콘창 닫기
울음
안녕
감사해요
당황
피폐

이모티콘을 클릭하면 댓글창에 입력됩니다.