Stage2. 파이썬 기초문법 이해하기 #1

본격적으로 파이썬 코딩을 시작해봅니다. 두번째 스테이지에서는 프로그램의 기초가되는 출력/입력문과 변수, 자료형에 대해서 공부합니다.

출력문 print()의 기본 이해하기

새로운 앞에서 작성한 week2 디렉토리 안에 새로운 파이썬 파일을 생성하고 실행해봅니다.

week2_1.py
print("Hello World")
print(3)
print(-11)

실행결과 Hello World 3 -11

위와 같이 print문을 활용하면 괄호 안의 내용이 콘솔영역에 출력되게 됩니다. 이때 Hello World와 같은 문자의 경우는 따옴표로 출력하고자하는 데이터를 표시해줘야하고 3-11과 같은 숫자는 괄호 안의 내용이 그대로 출력됩니다.

*큰 따옴표와 작은 따옴표는 파이썬 안에서 구분되지 않고 같은 의미로 사용됩니다. (프로그래밍 언어에 따라 구분하는 경우가 있습니다.)

print(문자 or 숫자 or 변수)

괄호 안의 데이터를 화면에 출력합니다. 문자는 큰 따옴표(") 또는 작은 따옴표(')로 묶어준 후에 사용할 수 있습니다. 숫자는 그대로 넣을 수 있습니다.

변수의 개념 이해하기

변수를 할당하고 출력하기

1앞에서 작성한 week2_1.py 파일의 내용을 아래와 같이 수정한 뒤 실행해봅니다.

week2_1.py
a = "Hello World"
b = 3
c = -11
print(a)
print(b)
print(c)
print(a, b, c)

실행결과 Hello World 3 -11 Hello World, 3, -11

위와 같이 코드를 실행하면, 각각 a에는 "Hello World"가 저장되고, b에는 3, c에는 -11이 되어 아래에서 출력하는 경우 a, b, c를 출력하면 문자 a, b, c가 아닌 저장된 값 "Hello World", 3, -11이 출력되는 것을 확인할 수 있습니다.

print의 괄호 안에 데이터를 ,로 구분하는 경우 여러 데이터가 공백(space)로 구분되어 출력되는 것을 확인할 수 있습니다.

이 때, 값이 저장되는 a, b, c를 바로 변수라고 합니다. 변수에 원하는 데이터를 저장하여 저장한 데이터를 여러번 활용하거나 연산해서 사용할 수 있습니다.

= 연산자의 경우, 일반적으로 수학에서는 같다라는 의미로 활용되지만, 프로그래밍에서는 오른쪽의 값을 왼쪽에 넣어줘라는 명령의 의미로 활용됩니다. 이 경우 왼쪽에는 대부분 변수가 오게됩니다.

변수이름 = 값(숫자/문자)

특정한 값을 변수에 저장합니다.

  • 숫자를 저장하는 경우: 그대로

  • 문자를 저장하는 경우: 큰 따옴표 or 작은 따옴표로 묶어줍니다.

*변수이름은 자유롭게 설정할 수 있으나, 숫자로 시작하거나, 특수기호가 들어가는 경우에는 변수로 사용할 수 없습니다. **변수이름에 스페이스바를 사용할 수 없으므로 _로 대체해서 많이 사용합니다. (ex. hello_world = "Hello world")

문자와 숫자 구분하기

이번에는 출력하고 있는 변수들을 따옴표로 묶은 후 코드를 실행해봅시다.

week2_1.py
a = "Hello World"
b = 3
c = -11
print("a")
print("b")
print("c")
print(a, b, c)

실행결과 a b c Hello World, 3, -11

변수 이름에 따옴표를 넣어서 실행하는 경우, 변수의 값이 출력되는 것이 아니라 a, b, c 문자 그 자체가 출력되게 됩니다. 이는 따옴표에 묶여있는 a, b, c를 변수가 아닌 문자로 인식했기 때문입니다.

이렇게 기본적으로 따옴표가 없는 문자는 컴퓨터가 변수라고 인식하기 때문에 문자데이터를 사용하고 싶은 경우에는 꼭 따옴표로 데이터를 구분해주셔야합니다.

숫자/문자의 연산과 자료형 이해하기

숫자의 연산

파이썬 프로그래밍 언어에서는 일반적으로 생각하는 대부분의 숫자 연산이 가능합니다. 이번에는 아래 코드를 week2_1.py파일에 추가한 후 실행해봅니다.

week2_1.py
# 숫자의 연산
a = 1
b = 5
print(a+b)
c = a / b
print(c)

실행결과 6 0.2

먼저 # 숫자의 연산 부분은 코드의 실행에 아무런 영향을 끼치지 않는 것을 알 수 있습니다. 파이썬 코드에서 #부분은 주석(comment)로 코드에 영향을 미치지 않습니다. 주석은 코딩을 하면서 메모하는 역할로 사용됩니다. 자신이 작성한 코드에 설명을 붙여놓으면 다른 사람이 코드를 이해하는데 도움을 줄 수도 있습니다.

*단축키: (win)ctrl + / / (mac)command + /

코드에서 볼 수 있는 것처럼 변수에 숫자를 활용하여 기본적인 숫자 연산을 할 수 있습니다. c = a / b와 같이 연산 결과를 다시 변수에 저장하는 것도 가능합니다.

연산자

설명

예시

+

더하기

a = 10 + 3

a: 13

-

빼기

a = 10 - 3

a: 7

*

곱하기

a = 10 * 3

a: 30

/

실수 나누기 (결과 값: 소수)

a = 10 / 3

a: 3.333..

%

나머지

a = 10 % 3

a: 1

//

정수 나누기 - 몫 (결과값: 정수)

a = 10 // 3

a: 3

문자의 연산

특이하게도 파이썬은 문자의 덧셈연산과 곱셈 연산이 가능합니다. 이번에는 아래 코드를 week2_1.py파일에 추가한 후 실행해봅니다.

week2_1.py
# 문자의 연산
a = "Hello"
b = "World"
print(a+b)
c = a*3
print(c)

실행결과 HelloWorld HelloHelloHello

문자의 연산은 위와 같은 두가지 경우만 가능합니다. 이 두가지 경우가 아닌 경우 에러가 발생하게됩니다.

덧셈연산의 경우 문자와 문자의 덧셈만 가능합니다. 두 문자를 더하는 경우 두 문자가 공백없이 그대로 붙게됩니다.

곱셈연산의 경우 문자와 정수의 곱셈만 가능합니다. 문자에 정수를 곱하는 경우 앞의 문자가 정수번 반복되게 됩니다.

자료형의 이해

가격정보를 나타내는 프로그램을 만들고 싶어서 아래와 같은 프로그램을 작성한후 실행해보았습니다.

week2_2.py
# 가격 정보 출력하기
a = 1000
b = "원"
print(a+b)

실행결과 TypeError: unsupported operand type(s) for +: 'int' and 'str'

위 코드를 그대로 실행하면 위와 같은 에러가 발생하게 됩니다. 위와 같은 에러는우 덧셈 연산의 조건문자와 문자의 덧셈 규칙을 어겼기 때문에 발생했는데요. 컴퓨터는 내부적으로 각 변수에 저장된 데이터가 숫자인지 문자인지 구분하고 있습니다.

종류

type

예시

정수

int

a = 3

실수

float

a = 0.3

문자

str

a = "Hello World"

파이썬은 위와 같이 데이터를 구분하고 있는데요. 이와 같은 데이터의 종류를 '자료형'이라고 말합니다. 위의 표를 참고하면 발생한 에러코드를 해석할 수 있습니다.

TypeError: unsupported operand type(s) for +: 'int' and 'str'

Type Error: 'int(정수)'와 'str(문자)' 사이에서는 + 연산자를 지원하지 않습니다.

파이썬은 기본적으로 에러가 발생하는 경우 어떤 에러가 발생했는지 에러메시지를 보여주기 때문에 에러 메시지를 보면 오류를 쉽게 수정할 수 있습니다.

종류

type

예시

참/거짓

bool

a = True

리스트

list

a = 0.3

딕셔너리

dict

a = "Hello World"

...

*숫자와 문자 외에도 여러가지 자료형이 존재합니다.

자료형 바꾸기

그렇다면 "1000원"을 출력할 수 있는 방법은 없는 걸까요? 아래와 같이 코드를 수정한 후 다시 한번 실행해봅시다.

week2_2.py
# 가격 정보 출력하기
a = 1000
a = str(a)
b = "원"
print(a+b)

실행결과 1000원

수정한 코드를 실행하면 원하는 결과값이 출력된 것을 확인할 수 있습니다.

a = str(a)

삽입된 코드를 살펴보면 a를 문자로 바꿔서 다시 a에 저장해줘라는 의미가 됩니다. 위 자료형 표에서 type을 활용하면 해당하는 자료형으로 변환할 수 있습니다.

변수 = type(변수)

ex) a = int(a)

괄호 안의 변수/데이터를 해당하는 자료형으로 변환합니다.

이 때, 변환 가능한 데이터는 자료형은 다르지만 표현이 같은 데이터여야 합니다.

# 형변환 가능
a = "1500"
a = int(a)
# 형변환 불가
a = "천오백"
a = int(a)

입력문 input()의 이해하기

입력문 input()의 기본

이번에는 데이터를 코드 안에서 직접 수정하는 것이 아니라 프로그램을 실행시킨 후에 입력받아봅시다.

week2_3.py
name = input("이름을 입력해주세요: ")
age = input("나이를 입력해주세요: ")
print("이름은", name)
print("나이는", age)

실행결과(* 아래 기울여쓴 부분은 입력한 부분) 이름을 입력해주세요: 코알라 나이를 입력해주세요: 14 이름은 코알라 나이는 14

위 코드를 실행한 후에 실행영역을 살펴보면, 이름을 입력해주세요: 가 출력된 이후에 프로그램이 멈추게 됩니다.

입력문 input()을 사용하였기 때문에 파이썬이 사용자의 입력을 기다리는 건데요. 콘솔 영역을 선택하신 후 원하는 이름을 입력하면 다시 프로그램이 실행되게 됩니다.

기본적으로 input()은 사용자로부터 데이터를 입력받아 좌측의 변수에 저장하는 역할을 합니다. 일반적으로 입력을 요청할 때는 어떤 데이터를 입력해주세요 라는 안내문을 출력해주는 것이 일반적이기 때문에 input()의 경우 1. 안내문을 출력하고 2. 데이터를 입력받는 두가지 기능을 가지고 있습니다.

변수 = input("입력 안내문")

괄호 안의 입력안내문을 출력합니다.

실행창에서 데이터를 입력받아 변수에 저장합니다.

입력받은 데이터는 "문자"형태로 저장됩니다.

input()을 통해 입력받은 데이터의 자료형

위에서 입력받은 나이 데이터를 활용하고 싶어서 아래와 같이 코드를 수정한 후 실행하였습니다.

week2_3.py
name = input("이름을 입력해주세요: ")
age = input("나이를 입력해주세요: ")
print("이름은", name)
print("나이는", age)
g_age = age - 1
print("만 나이는", g_age)

실행결과(*아래 기울여쓴 부분은 입력한 부분) 이름을 입력해주세요: 코알라 나이를 입력해주세요: 14 이름은 코알라 나이는 14 ... TypeError: unsupported operand type(s) for -: 'str' and 'int'

실행결과 위와 같은 에러가 발생하게 됩니다. 에러 코드를 살펴보면 아래와 같습니다.

Type Error: 'str(문자)'와 'int(정수)' 사이에서는 - 연산자를 지원하지 않습니다

분명히 숫자 14를 입력했는데 문자와 정수 사이의 뺄셈 연산을 시도했다는 에러메시지가 나오는데요, 이는 기본적으로 input()을 통해 입력받은 데이터는 문자 형태로 저장되기 때문입니다.

다시 말하면, input()을 통해 데이터를 입력받은 경우 변수age에는 숫자 14가 아니라 문자 "1"과 "4"가 저장되는 것입니다. 앞에서 배운 형변환을 활용하면 위 문제를 해결할 수 있습니다.

week2_3.py
name = input("이름을 입력해주세요: ")
age = input("나이를 입력해주세요: ")
print("이름은", name)
print("나이는", age)
g_age = int(age) - 1
print("만 나이는", g_age)

실행결과(*아래 기울여쓴 부분은 입력한 부분) 이름을 입력해주세요: 코알라 나이를 입력해주세요: 14 이름은 코알라 나이는 14 만 나이는 13

2두번째 스테이지에서 다룬 입력/출력/변수/자료형은 프로그래밍의 기본이 되는 개념입니다. 특히 위에서 아래로 순서대로 실행되는 프로그래밍의 개념과 할당연산자 =의 개념을 꼭 숙지하시길 바랍니다!