본문으로 바로가기

파일의 IT 블로그

  1. Home
  2. 프로그래밍 강좌/Python [리뉴얼중]
  3. [파이썬 강좌] #6 input() 으로 입력 받기, 주석(Comment), 세미콜론

[파이썬 강좌] #6 input() 으로 입력 받기, 주석(Comment), 세미콜론

· 댓글개 · KRFile

원래는 input() 과 주석, 세미콜론을 따로 분리해서 강좌를 작성하려고 했는데 그럼 분량이 너무 안나와서 하나로 합치게 되었습니다. 따라서 오늘은 input(), 주석, 세미콜론 이 3가지 주제에 대해 배웁니다.

우리는 앞에서 많은걸 배웠습니다. 오늘 메인 주제에 앞서 앞에서 배운 내용을 전체적으로 복습해보겠습니다.

 

print("Hello World")

우선 초창기에는 print 라는 기능을 활용해 모니터에 무언가를 출력하는 방법을 배웠습니다.

 

print("나는 문자열")
print('나는 문자열')
print(1 + 1)

그리고 중간에는 문자열과 숫자에 차이에 대해 알아보았죠. 홑따옴표나 쌍따옴표로 감싼 문자들의 나열을 파이썬에서는 문자열이라고 한다고 했고, 이외에 숫자들은 당연히 숫자로 취급합니다.

 

또 변수라는 개념도 배웠었죠. 모든 프로그램의 실행은 HDD/SSD 에서 실행되어 RAM위에서 이루어지며 실행중인 프로그램(프로세스)은 RAM 위에 데이터를 저장한다고 했습니다.

 

변수는 여러가지 것으로 설명할 수 있다고 했는데 쉽게는 값을 담을 수 있는 이름이 있는 상자! 였고 조금 엄밀하게는 데이터를 저장하고 계속해서 편리하게 사용할 수 있게 해주는 메모리 공간(RAM) 이라고 했었습니다.

 

정리하자면 우리는 모니터에 숫자던, 문자열이던 마음대로 출력할 수 있는 능력도 있고, 메모리(RAM) 에 데이터를 저장하고 출력하는 능력도 있습니다. 하지만 아직 한가지 아쉬운 부분은 우리에게는 아직 키보드로 부터 입력을 받을 능력은 없다는 것 입니다.

 

오늘 배울 input() 이 바로 그 역할을 하게 됩니다. 오늘 내용을 잘 숙지하시면 키보드로부터 파이썬을 활용해 입력을 받아낼 수 있습니다.

 

input() 으로 키보드로부터 입력받기

a = input()
print(a)

설명이 주저리 주저리 길었는데 오늘 사실 입력받는 코드는 이게 끝입니다.

 

해당 코드를 실행하시면 분명 아무것도 안되는 거 같은데 실제로는 프로그램이 계속 실행중인걸 알 수 있습니다. 이 코드를 실행시키면 실제로는 키보드로부터 무언가 입력받을때까지 기다렸다가, 우리가 키보드로 입력을 하면 그 입력한 내용을 그대로 출력하고 프로그램이 종료됩니다.

 

터미널 쪽에서 실행하면 대충 이런 모습이 됩니다. 입력이 2번된 거 같이 보이지만 이건 윈도우 터미널이 저희가 입력한걸 편리하라고 한번 더 출력으로 보여줘서 그렇고 실제로 입력은 1번된 게 맞습니다.

 

a = input()
print(a)

어쨌던 이 코드의 기능을 한 줄로 요약하면 키보드로부터 입력을 받고, 그걸 a에 저장한 다음 출력한다가 됩니다.

input() 을 사용하면 키보드로부터 데이터를 입력받아 저장할 수 있게 됩니다.

 

기능, 코드만 놓고 보면 간단합니다. 그렇다고 해서 여기서 이해를 멈추고 그냥 무지성 코딩기계가 되면 안되겠죠? 입력이 어떻게 이루어지는 지 알아보겠습니다.

 

프로그래밍 언어 특성 상 당연히 위에서 아래로 한 줄씩 실행할 겁니다. 파이썬 인터프리터는 제일 처음 줄(Line)을 실행하게 됩니다.

 

그럼 a = input() 이 실행되게 됩니다. 앞에 변수편에서 입이 마르게 설명했지만 "=" 는 수학에서 같다(등호) 가 아니고 대입 연산자라는 녀석입니다. 대입 연산자는 오른쪽에서 왼쪽으로 연산을 수행합니다. (오른쪽에 있는 값을 왼쪽에 덮어쓰기함) 그러니깐 일단 오른쪽에 있는 값을 먼저 결정해야 합니다.

 

오른쪽에 있는 값을 결정하려고 봤더니 input() 이란 걸 실행하라고 했네요. 이 앞에서 print() 나 input() 이나 그냥 "기능" 이라고만 설명드렸지만 실제로 print() 나 input() 은 "함수" 라고 하는 녀석들입니다. 무언가 영어로 뭔가 적혀있고 괄호가 양쪽에 있으면 그건 함수라고 부릅니다. 영어로는 Function 이라고 해요.

 

예를 들어서 a() 는 a라는 함수고 b() 는 b라는 함수입니다. 또 괄호 안에는 뭐가 들어가도 상관 없습니다. 그래서 aab("a") 라는 함수가 있을 수도 있고 aac(111,11,111,11) 이라는 함수가 있을수도 있습니다.
물론 아무거나 막 집어넣는다고 함수가 실행되진 않지만요.

 

어쨌던 간에 영어 단어로 적혀있고 그 뒤에 괄호가 있으면 그건 함수라고 부른다. 이 함수는 실행할 수 있고 특별한 기능을 한다. 이것만 오늘은 이해하고 넘어가겠습니다. 따라서 앞으로는 print() 를 print() 함수라고 부를꺼고 input() 을 input() 함수라고 부를겁니다.

이 함수라는 녀석들은 실행을 하면 특별한 기능을 합니다.

 

따라서 input() 을 실행시키면 키보드에서 입력을 받는 코드가 실행되게 됩니다. input() 이 딱 실행되는 순간 키보드로부터 입력을 받을때까지 기다리고, 입력을 받으면 그 자리에 값이 들어오게 됩니다.

 

예를 들어서 사용자가 Hello World라고 입력했다고 치겠습니다.

 

input() 함수가 사용자로 부터 Hello World 를 다 입력받은 순간에 input() 함수는 그 값을 input() 쪽에다가 집어 던집니다.

이걸 함수가 값을 반환(Return) 했다고 표현합니다.

최종적으로 input()  쪽에 Hello World가 오는 양상이 되게 됩니다.

그래서 a라는 변수에 Hello World라는 문자열이 저장되고 이제 Hello World 가 출력됩니다.

 

사실 input() 이 집어던진다는게 잘 이해가 되지 않을 수 있습니다. 일단은 input 이라는게 함수라고 하는거고, 실행을 하면 키보드로부터 입력을 받아서 input() 함수 부분이 사용자가 입력한 값으로 바뀐다. (input 함수가 값을 던지기 때문에) 정도만 받아들이시면 됩니다. 아직 함수를 배우지 않았으므로 아무래도 100% 이해는 어렵습니다.

 

이것마저도 힘드시다면 그냥 키보드로부터 입력을 받고, 그걸 a에 저장한 다음 출력한다 정도로만 이해하고 넘어가셔도 무방합니다. 어짜피 뒤에서 함수를 배우면 자연스럽게 다 이해가 될 것 입니다 ㅎㅎ.

 

input() 입력 시 힌트도 같이 보여주기

아까 input() 을 활용해 입력을 받을때는 입력을 받을때까지 커서가 생겨서, 그 부분에 입력을 했어야 했습니다.

하지만 터미널에서 입력을 받는 저희 입장에서는 입력을 받을 때 "키보드로 데이터를 입력하세요 : " 와 같은 힌트 문구가 같이 출력되어서 입력을 받을 때 도움을 주면 좋을 것 입니다.

 

a = input("키보드로 데이터를 입력하세요 : ")
print(a)

이러한 것을 하고 싶다면 위 처럼 코드를 수정하면 끝입니다.

아까전에 함수 괄호 안에는 무엇이든 들어갈 수 있다고 했습니다. 물론 넣을때는 정해진대로 넣긴 해야 합니다.

input() 함수는 안에 문자열을 넣을 수 있는데 이게 바로 입력을 받을 때 입력받을 힌트 문구입니다.

 

이러한 힌트 문구를 다른 말로 프롬프트(prompt) 라고도 부릅니다. [출처]

 

 

코드 실행 시 다음과 같이 힌트 문구(프롬프트) 가 출력되는걸 알 수 있습니다.

 

정리하자면 input() 은 안에 아무것도 안넣으면 힌트 문구가 없는 셈이 되어서 프롬프트 없이 입력을 받는거고, 안에 문자열을 주면 힌트 문구가 나오는 채로 입력을 받을 수 있게 되는겁니다. 그렇게 어렵진 않죠?

 

input() 입력시 주의사항

input() 함수는 입력을 받고 입력을 "문자열" 로 반환(던짐, Return) 합니다.

따라서 우리가 10이라고 입력을 해도 이건 숫자 10으로 저장되는게 아닌 문자열 "10" 으로 저장됩니다.

어떻게 입력을 하던간에 무조건 통째로 문자열로 입력받습니다. 걍 설계가 그렇게 되어 있어요.

 

숫자 10과 문자열로 된 숫자 "10" 의 차이에 대해선 이미 앞에서 설명을 드렸죠? 또 다시 설명을 드리진 않겠습니다.

 

first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(first_num + second_num)
first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(first_num - second_num)

코드 2개를 예제로 가져와 봤습니다. 실행 전에 두 코드의 실행 결과를 예측해보고, 직접 실행해보세요.

값을 각각 입력 받아 first_num , second_num 변수에 저장하고 그 값에 대한 합, 차를 구하는 예제입니다.

 

입력은 첫 번째로 10, 두 번째로 10을 입력했다고 가정합니다. 실행결과는 어떻게 될까요?

20, 0이 출력될까요 아니면 다른 값이..?

 

first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(first_num + second_num)
>>> 1010
first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(first_num - second_num) <<< 에러!!!

Traceback (most recent call last):
  File "C:\Users\pgh26\Documents\Python_Lecture\main.py", line 3, 
in <module>
    print(first_num - second_num)
          ~~~~~~~~~~^~~~~~~~~~~~
TypeError: unsupported operand type(s) for -: 'str' and 'str'

20, 0이 출력되면 좋겠지만 이상하게도 첫 번째 코드의 결과는 1010이고 두 번째 코드는 3번째 줄에서 오류가 나네요

이렇게 결과가 나오는 이유는 input() 함수는 입력을 무조건 "문자열" 로만 받기 때문입니다.

 

first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")

10, 10을 각각 입력하면 first_num 에는 문자열 "10" 이 second_num 에는 문자열 "10" 이 저장됩니다.

 

print(first_num + second_num)

그리고 first_num 과 second_num을 더하고 있습니다. first_num에는 "10" 이 들어있고 second_num 에는 "10"이 들어있는거니 print(first_num + second_num) 은 print("10" + "10") 하고 똑같습니다.

문자열을 더하면 결합(concat)되죠? 그래서 결과가 "1010" 입니다.

 

print(first_num - second_num)

그러나 두 번째 코드에서는 first_num 과 second_num 을 빼는 코드인데 이건 "10" - "10" 을 하라는 것과 같습니다. 여러분 혹시 앞에서 문자열 끼리 빼는거 배우셨나요? 이런건 파이썬에서 정의되지 않은 동작입니다. 애초에 파이썬 언어를 만든 사람이 이런 동작은 할 수 없게 해놨어요.

 

문자열에 적용할만한 연산은 앞에서 배웠듯이 더하기와 곱하기 밖에 없습니다.

 

Traceback (most recent call last):
  File "C:\Users\pgh26\Documents\Python_Lecture\main.py", line 3, 
in <module>
    print(first_num - second_num)
          ~~~~~~~~~~^~~~~~~~~~~~
TypeError: unsupported operand type(s) for -: 'str' and 'str'

따라서 문자열 끼리 빼버리면 TypeError: unsupported operand type(s) for -: 'str' and 'str' 

문자열 빼기 문자열은 지원하지 않는다 라는 오류 메세지가 3번째 라인에서 실행되고 종료됩니다.

 

아! 이해는 되는데 그러면 10, 10 입력을 받은다음에 숫자로 빼는 10 - 10 이나 10 + 10 은 어떻게 해야되나요? 라는 의문이 생길 수 있습니다. 근데 input() 은 입력을 받으면 무조건 문자열로 나오잖아요..?

 

걱정하지 않으셔도 됩니다! 파이썬은 문자열로 된 숫자 "10" 과 같은 것을 진짜 숫자 10 으로 바꾸는 함수를 지원합니다.

바로 int() 함수를 사용하면 문자열로 된 숫자를 진짜 숫자로 쉽게 바꿀 수 있습니다.

 

first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(int(first_num) + int(second_num))
first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(int(first_num) - int(second_num))

아까 코드를 다음과 같이 수정합니다. 이제 실행해보면 10, 10을 각각 입력하면 20과 0이 제대로 출력되는걸 알 수 있습니다.

 

print(int(first_num) + int(second_num))
print(int(first_num) - int(second_num))

바뀐 부분만 주목해보자면 사실 한 줄밖에 없습니다. 특이하게도 int() 라는 함수로 각 변수를 감싸서 더하고 있음을 알 수 있습니다. int 함수는 문자열로 된 숫자 ex) "10" 를 입력받아서 진짜 숫자 10 으로 바꿔주는 함수입니다.

 

int 함수로 문자열로 된 숫자를 감싸버리면 값을 문자열에서 숫자로 간편하게 변환할 수 있습니다.

문자열로 변환되는 과정을 순서대로 (Step by Step) 보겠습니다.

 

print(int(first_num) + int(second_num))

파이썬 인터프리터는 해당 코드를 해석하려고 합니다.

현재 first_num에는 "10" , second_num 에는 "10"이 저장되었다고 가정합니다.

 

print(int("10") + int("10")

저장된 값에 따르면 코드는 이런식으로 해석될 겁니다. int 함수는 "10" 을 입력으로 각각 받습니다.

그리고 입력받은 "10" 을 숫자 10으로 변환해서 반환(Return) 합니다.

10이라는 값을 int("10") 쪽에 던집니다.

 

print(10 + 10)

최종적으로 값은 이렇게 해석됩니다. 출력 결과는 20입니다.

 

print(int(first_num) + int(second_num))

다시 한번 말씀드리자면 이렇게 이해하는게 어려우면 그냥 int로 감싸면 문자열 숫자를 그냥 숫자로 쉽게 바꿀 수 있다 정도로만 이해해도 일단은 문제 없습니다. 그래도 지금까지 많이 해봤으니깐 이해하려고 노력은 해보세요 :)

 

first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(int(first_num) + int(second_num))
first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(int(first_num) - int(second_num))

참고로 위 코드는

 

first_num = int(input("첫 번째 값을 입력하세요 : "))
second_num = int(input("두 번째 값을 입력하세요 : "))
print(first_num + second_num)
first_num = int(input("첫 번째 값을 입력하세요 : "))
second_num = int(input("두 번째 값을 입력하세요 : "))
print(first_num - second_num)

이렇게 수정해도 똑같이 동작합니다.

 

first_num = input("첫 번째 값을 입력하세요 : ")
second_num = input("두 번째 값을 입력하세요 : ")
print(int(first_num) + int(second_num))

 

다만 구조가 좀 다른데 아까는 일단 입력값을 문자열로 first_num, second_num에 저장했다가 나중에 출력할때만 int로 바꿔서 더해 출력한다면

 

* 이때는 코드 실행이 끝나면 first_num, second_num이 문자열 값을 가지게 됨

 

first_num = int(input("첫 번째 값을 입력하세요 : "))
second_num = int(input("두 번째 값을 입력하세요 : "))
print(first_num + second_num)

이렇게 하는건 입력받자마자 input() 으로 입력받은 값을 int 로 감싸서 다시 first_num, second_num에 저장합니다.

이러면 first_num, second_num 은 숫자값을 가지게 되는 것 이지요.

 

출력 결과는 동일하지만 차이점이라고 하면 1. 전자는 변수에 문자열로 저장했다가 나중에 숫자값으로 바꿔서 출력값만 출력, 2. 후자는 변수에 문자열로 입력받고 그걸 다시 int로 변환해서 변수에 숫자값으로 저장. 그리고 나중에 연산 이렇게 차이가 있겠네요.

 

first_num = int(input("첫 번째 값을 입력하세요 : "))
second_num = int(input("두 번째 값을 입력하세요 : "))

참고로 이렇게 함수 여러개를 중첩해서 사용하는게 오늘 처음봐서 좀 익숙하지 않으실 수 있는데 이렇게 코딩하는 경우가 꽤 있으니 일단 눈으로 익혀두시길 바랍니다.

 

first_num = int(input("첫 번째 값을 입력하세요 : "))

다시 함수가 중첩되면 어떻게 해석되는지 궁금해하시는 분들이 있을태니 또 자세히 알아봅니다.

 

사용자 입력값은 "10" 으로 했다고 가정합니다

 

대입연산자에 의해 오른쪽 값을 먼저 결정해야 합니다. 오른쪽 값을 계산하게 됩니다.

 

보니깐 int 함수가 먼저 나왔네요. int 함수는 아까도 말씀드렸다 싶이 들어온 문자열로 된 숫자값을 숫자값으로 변환해 반환합니다. 근데 어라? int 함수 안에 input 함수가 또 들어가 있네요. 

 

int 함수 안에는 값이 들어와야 합니다. input 함수를 실행해서 값을 일단 받아와야겠네요. 따라서 input 함수가 실행되어 키보드로부터 값을 받아옵니다.

 

input 함수로 값을 입력받고 10 이 입력되어 input 함수가 10을 input() 쪽에 던집니다.

결론적으로 int("10") 이 실행됩니다.

 

int 함수가 "10" 을 입력받아 10을 만들고 int("10") 쪽에 10을 반환합니다. 최종적으로 first_num 엔 10이 저장됩니다.

다시 second_num 역시 같은 일이 이루어집니다.

 

주석(Comment)

radius = int(input("반지름을 입력해주세요 : "))
print(3.14 * (radius ** 2))

다음은 두 줄의 아주 간단한 예제입니다. 원의 넓이 공식 $\pi*r^2$ 을 활용해서 반지름을 radius 라는 이름의 변수에 입력받고 원의 넓이를 계산하는 코드입니다.

 

물론 이렇게 간단한 코드야 생각을 조금만 해보고 읽어보면 금방 금방 이해가 될 것 입니다. 

 

위에 10000줄의 코드
radius = int(input("반지름을 입력해주세요 : "))
print(3.14 * (radius ** 2))
아래 10000줄의 코드

하지만 위 아래에 10000줄의 코드가 있고 이 코드가 떨렁 등장한다면 바로 바로 이게 원의 넓이다 알 수 있을까요?

물론 원의 넓이 자체가 너무 대중적인 수학 지식 이기 때문에 😅 알 수 있겠지만...

뭐 일단 생각을 해야겠죠?

 

print(3.14 * (radius ** 2))

위 코드를 다른사람한테 보여줄 때 가장 좋은 건 이 부분에 이 코드가 원의 넓이를 계산하는 코드다! 라고 코드에 메모를 해두면 좋을 것 입니다.

그게 바로 주석(Comment) 입니다.

 

주석이란 코딩을 할 때 코드에 이 코드가 어떤 역할을 한다. 라고 메모해두는 역할을 하게 됩니다.

파이썬에서 코드에 주석(메모) 을 메기고 싶으면 "#" 특수문자를 이용하시면 됩니다.

 

print(3.14 * (radius ** 2)) # 원의 넓이를 구한다

주석은 이렇게 매겨주세요! 특수문자 # 뒤에 원하는 메모를 남겨주시면 됩니다.

 

radius = int(input("반지름을 입력해주세요 : ")) # 반지름을 입력 받는다
print(3.14 * (radius ** 2)) # 원의 넓이 공식으로 원의 넓이를 계산한다

이렇게 메모를 남겨두면 애초에 생각할 필요도 없이 코드만 쭈욱 읽으면 코드가 어떤 기능을 하는지 한눈에 알 수 있게 됩니다 :)

 

하지만 이러한 메모가 프로그램의 수행에 영향을 끼치면 안되겠죠? 주석은 애초에 우리가 말하는 언어(자연어) 지 프로그래밍 언어가 아니잖아요.

 

매겨놓은 주석은 실행할 때 전부 무시됩니다! 실행할 땐 없는걸로 친다고 생각하면 됩니다.

 

# radius = int(input("반지름을 입력해주세요 : ")) # 반지름을 입력 받는다
# print(3.14 * (radius ** 2)) # 원의 넓이 공식으로 원의 넓이를 계산한다

그래서 코딩을 하다가 그 코드가 더 이상 사용되지 않게 되면 그 내용을 지우는 거 보다는 앞에 # 기호를 통해 그 코드 전체를 통째로 주석으로 바꿔주는게 좋습니다. 이러면 실행때는 무시되지만 나중에 필요할 때 주석 기호 #을 지워서 다시 재활용할 수도 있겠죠? 물론 정말 쓸모 없으면 주석을 매길 필요도 없이 그냥 지워버리면 되겠습니다.

 

# a = 100; b = 200; c = 300;

참고로 코드 라인에 바로 주석 처리를 하고 싶으면 커서를 앞으로 옮기고 직접 #를 입력하는 방법도 있지만

그 코드 줄을 클릭한 다음 VSCode 주석 단축키인 Ctrl + / 키를 누르는 방법도 있습니다.

 

꼭 한 줄 뿐만이 아니라 여러줄을 선택한 후 Ctrl + / 을 입력해도 여러줄 주석 처리가 가능합니다.

 

여러 줄 주석

radius = int(input("반지름을 입력해주세요 : "))
print("원의 넓이는 : ")
print(3.14 * (radius ** 2))

파이썬에는 여러줄 주석을 위한 언어적 지원이 없지만 2가지 정도 방법으로 여러 줄 주석을 처리할 수 있습니다. 여러 줄 주석이란 2줄 이상의 코드 라인에 있어 주석 처리 하는 방법을 의미합니다.

 

위 코드 3줄 전체를 주석처리 하는 방법을 알아 봅시다.

 

# 이용

일단 파이썬에는 따로 여러줄 주석을 한꺼번에 처리하는 언어적 지원이 없으므로 그냥 3줄에 각각 #을 붙여주어 주석을 달아주면 됩니다.

 

3줄을 이렇게 드래그로 선택하고 VSCode 주석 단축키 Ctrl + / 를 누릅니다.

 

그러면 이렇게 통째로 주석 처리가 가능합니다.

다만.. 이건 여러 줄 주석을 처리하는 방법이라기 보단 그냥 3줄에 각각 주석을 한개씩 단것에 지나지 않습니다.

 

여러 줄 주석이라고 할만한 2번째 방법을 아래에서 소개합니다.

 

""" 문자열 기능 이용

print(
    """
    (1절)
    동해물과 백두산이 마르고 닳도록
    하느님이 보우하사 우리나라만세
    (후렴)무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세
 
    (2절)
    남산위에 저 소나무 철갑을 두른듯
    바람서리 불변함은 우리기상 일세
    (후렴)무궁화 삼천리 화려강산 대한사람 대한으로 길이보전하세
 
    (3절)
    가을하늘 공활한데 높고 구름없이 
    밝은달은 우리가슴 일편단심일세
    (후렴)무궁화 삼천리 화려강산 대한사람 대한으로 길이보전하세
 
    (4절)
    이 기상과 이 맘으로 충성을 다하여
    괴로우나 즐거우나 나라사랑하세
    (후렴)무궁화 삼천리 화려강산 대한사람 대한으로 길이보전하세
    """
)

이전에 홑따옴표 3개 또는 쌍따옴표 3개를 이용해 엔터를 포함하여 문자열을 통째로 처리할 수 있다고 배웠습니다.

이를 이용해 주석을 처리하면 여러 줄 주석을 처리해낼 수 있습니다.

 

radius = int(input("반지름을 입력해주세요 : "))
print("원의 넓이는 : ")
print(3.14 * (radius ** 2))

이 코드를

 

"""
radius = int(input("반지름을 입력해주세요 : "))
print("원의 넓이는 : ")
print(3.14 * (radius ** 2))
"""
print("위에 문자열은 통째로 무시됩니다 = 주석")

이렇게 통째로 문자열에 담아버립니다. """ 로 통째로 문자열 처리하고 이것을 따로 변수에 저장하거나 print() 하지 않으면 그대로 버려집니다.

따라서 이건 주석이랑 똑같은셈이 됩니다. 이 코드를 실행하면 위에 문자열로 처리한 코드 3줄은 그냥 잠깐 저장만 됐다가 버려지고, 실제 실행되는 코드는 print("위에 문자열은 통째로 무시됩니다 = 주석") 밖에 없습니다.

 

어쨌던 진정한 여러 줄 주석은 파이썬의 문자열 표현 방법인 따옴표 3개를 이용하는 방법이라고 생각하시면 됩니다.

그러나 VSCode에서 여러 줄을 잡고 주석 단축키(Ctrl + /)를 입력하면 달아지는건 따옴표 3개가 아닌 # 기호 3개기 때문에.. 여러 줄 주석 처리가 필요하면 제가 위에서 알려드린 방법 2개 중 원하는 방법을 하나 선택해서 사용하시면 되겠습니다.

 

제가 파이썬 코딩 시 개인적으로는 약 3~5줄 까지는 그냥 주석 단축키를 이용하여 # 을 달아주는걸로 하고 그 이상을 넘어가는 아주 많은 양의 코드를 주석처리 해야 하는 상황이면 따옴표 3개를 이용해 문자열로 묶어주어 여러줄 주석 처리를 하는 방식으로 코딩중입니다.

 

 

세미콜론

세미콜론은 키보드에서 ";" 라고 하는 기호입니다. 보통 어이없을때;; 감정 표현을 위해 일상생활에서 사용되는 특수기호죠. 하지만 프로그래밍 언어에서 세미콜론은 상당히 깊은 의미를 가집니다.

 

// C언어 코드 (세미콜론 예제, 파이썬 배우는거라 이 코드에 대해 이해할 필요 X)
int a = 10; // 변수 a에 10을 저장한다 (끝에 세미콜론 필수)

C언어, Java 와 같은 프로그래밍 언어들은 프로그래밍 코드 한 줄을 작성했으면 위와 같이 끝에 반드시 세미콜론을 찍어줘야 합니다. 프로그래밍 언어에서 마침표가 바로 세미콜론 입니다. C, Java 에서 코드를 한 줄 치고 세미콜론을 끝에 안적으면 얄짤 없이 오류가 뜨면서 실행이 되지 않습니다.

 

어 근데 파이썬에선 세미콜론 한번도 안적었는데요?

 

네 맞습니다. 세미콜론 무조건 찍는거야 세미콜론이 필수인 언어에서나 그렇지 파이썬은 코드 한 줄의 끝에 세미콜론을 찍을 필요가 없습니다. 참고로 코드 한 줄을 한 문장(Statement) 이라고도 표현합니다. 알아두세요. 

 

radius = int(input("반지름을 입력해주세요 : "));
print(3.14 * (radius ** 2));

하지만 찍어도 상관은 없습니다. 파이썬은 코드 끝에 세미콜론을 찍어도 무시하는 느낌으로 잘 동작합니다.

그러니깐 찍어도 그만, 안찍어도 그만이지만 기억상 파이썬 언어의 권고사항으로는 세미콜론을 찍지 않는게 권장입니다.

 

재미있게도 파이썬과 비슷한 특성을 가진 자바스크립트의 경우엔 똑같이 세미콜론을 찍던 안찍던 상관없지만 되도록 세미콜론을 찍는게 권고사항입니다.

 

아.. 그러면 파이썬에 세미콜론 쓸모 없나요? 라고 하면 또 그건 아닙니다. 조금 특수한 경우에는 사용하는게 괜찮을 수 있습니다. 예제로 들어가봅시다.

 

a = 100
b = 200
c = 300

a, b, c 에 각각 값을 대입하고 싶으면 이렇게 하면 됩니다.

 

a,b,c = 100,200,300

이렇게 해서 코드를 조금 더 줄일 수 있습니다.

 

a = 100 b = 200 c = 300

오. 그러면 이렇게 해도 괜찮을까요? a,b,c 로 대입하는게 가독성이 조금 더 떨어진다고 느꼈는지 이렇게 하는것도 도전해봅니다. 이 코드를 실행해보면 아쉽게도 오류가 나면서 파이썬 인터프리터가 제대로 해당 코드를 해석하지 못하는걸 볼 수 있습니다.

 

이 코드가 제대로 동작하지 않는 이유는 중간에 공백이 있어도 파이썬 인터프리터가 공백으로 각 줄의 코드를 구분 하지 않아 a = 100 b = 200 c = 300 이 각각 a = 100, b = 200, c = 300 이라는 코드라고 이해하지 못하기 때문입니다.

파이썬 인터프리터 한테 "인터프리터야! 이 코드는 a = 100, b = 200, c = 300 야!" 라고 알려주고 싶다면 아래처럼 하면 됩니다.

 

a = 100; b = 200; c = 300;

각 문장에 세미콜론을 찍으면 파이썬 인터프리터가 코드를 성공적으로 한 문장씩 해석하게 되어 각 변수에 대입이 잘 되는걸 알 수 있습니다. 참고로 c = 300 끝에 붙은 세미콜론은 생략해도 됩니다. 물론 세미콜론의 생략에 관한건 당연히 맨 끝에서 얘기하는 겁니다. 지금은 코드 구분을 위해 세미콜론을 사용하고 있어서 a = 100 끝에 있는 세미콜론이나 b = 200 끝에 있는 세미콜론을 지워버리면 얄짤 없이 오류가 뜹니다.

 

 

참고

https://www.freecodecamp.org/korean/news/pythonyi-yeoreo-jul-juseog-pythoneseo-yeoreo-julro-juseogeul-namgineun-bangbeob/

 

Python의 여러 줄 주석 - Python에서 여러 줄로 주석을 남기는 방법

주석은 모든 프로그래밍 언어에서 필수적인 요소입니다. 주석을 활용하면 코드에 대한 이해력을 향상시킬 수 있고, 코드의 가독성을 높일 수 있으며, 팀 동료들이 코드의 동작 방식을 이해하도

www.freecodecamp.org

JavaScript, Java, C++처럼 여러 줄 주석 처리시 /*...*/를 사용하는 다른 프로그래밍 언어와는 다르게 Python에는 여러 줄 주석과 관련하여 내장된 메커니즘이 없습니다.

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

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