변수 할당을 하는데 파이썬에는 다음과 같은 규칙들이 있다.
또한 파이썬은 C 언어와 다르게 변수를 설정할 때 자료형을 지정해주지 않아도 된다.
>>> x = 10
>>> x
10
>>> y = 'Hello, world!'
>>> y
'Hello, world!
>>> type(x)
<class 'int'>
>>> type(y)
<class 'str'>
하지만 그렇다고 변수의 자료형이 중요하지 않다는 것은 아니다. 마찬가지로 type
을 사용하면 변수의 자료형을 알아낼 수 있다. 파이썬에서는 문자열을 str
로 나타낸다.
>>> x, y, z = 10, 20, 30
>>> x
10
>>> y
20
>>> z
30
앞서 divmod
함수를 사용할 때 잠깐 보았지만 파이썬에서는 위와 같이 한번에 여러개의 변수를 지정해줄 수 있다. 각각의 값을 콤마로 구분해주면 된다. 이때 변수의 개수와 지정되는 값의 개수가 같아야한다. 만약 다르다면 아래와 같이 오류가 발생한다.
>>> x, y, z = 10, 20
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
x, y, z = 10, 20
ValueError: not enough values to unpack (expected 3, got 2)
만약 여러개의 변수에 동일한 값을 지정한다면 다음과 같이도 표현할 수 있다.
>>> x = y = z = 10
>>> x
10
>>> y
10
>>> z
10
>>>
이를 응용하면 변수의 값을 바꿀 때 다음과 같이 간단하게 표현할 수 있다.
>>> x , y = 10 , 20
>>> x , y = y, x
>>> x
20
>>> y
10
변수를 삭제하고자 한다면 del
를 사용하면 된다.
>>> x = 10
>>> del x
>>> x
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
x
NameError: name 'x' is not defined
>>>
>>> x = None
>>> x
>>> print(x)
None
변수를 만들고 None
을 할당한다면 빈 변수를 만들 수 있다.
보통 다른 언어에서는 NULL
이라고 표현하는데 파이썬에서는 None
이라고 한다.
>>> input()
Hello, world! (입력)
'Hello, world!'
input
함수는 사용자가 입력한 값을 가져오는 함수이다.
>>> x = input()
Hello, world! (입력)
>>> x
'Hello, world!'
이를 이용하면 위와 같이 입력된 변수에 넣을 수 있다.
한 가지 불편한 점은 input
함수를 그냥 사용하면 아무런 내용 없이 내용을 입력받을 때 까지 기다리기 때문에 입력받은 상태인지 출력이 없는 상태인지 알 수 없다. 따라서 input
함수 괄호 안에 문자열을 지정해주면 된다.
>>> x = input('문자열을 입력하세요: ')
문자열을 입력하세요: Hello, world! (입력)
>>> x
'Hello, world!'
그렇다면 input
함수를 통해 숫자를 입력받고 연산을 해보자 그런데 아래와 같이 하면 오류가 발생한다.
>>>x = input('숫자를 입력하세요 : ')
4
>>>print(x + 1)
Traceback (most recent call last):
File "/Users/choewonjun/start.py", line 2, in <module>
print(x + 1)
TypeError: can only concatenate str (not "int") to str
왜냐하면 input
함수를 통해서 입력받은 값은 항상 문자열이기 때문이다 따라서 아래와 같이 정수형으로 변환을 해줘야 연산이 가능하다.
x = int(input('숫자를 입력하세요 : '))
print(x + 1)
지금까지는 입력을 한 번에 하나씩 입력 받았다. 그렇다면 이번에는 입력을 여러개 받는 방법을 알아보자.
a, b = input('문자열 두 개를 입력하세요: ').split() # 입력받은 값을 공백을 기준으로 분리
print(a)
print(b)
문자열 두 개를 입력하세요: Hello Python (입력)
Hello
Python
바로 split
이라는 것을 사용하면 된다, 기본적으로 괄호안에 아무것도 넣지 않으면 빈칸으로 구분되고 특정 문자를 기준으로 구분하고 싶으면 split('문자')
이와 같이 괄호 안에 문자를 입력하면 그 문자를 기준으로 나눠진다.
a, b = input('숫자 두 개를 입력하세요: ').split(',') # 입력받은 값을 공백을 기준으로 분리
a = int(a) # 변수를 정수로 변환한 뒤 다시 저장
b = int(b) # 변수를 정수로 변환한 뒤 다시 저장
print(a + b)
숫자 두 개를 입력하세요: 10,20 (입력)
30
split
결과를 매번 int
로 바꿔주는 작업이 상당히 번거롭다. 이때 map
을 함께 사용하면 된다.
a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
print(a + b)
숫자 두 개를 입력하세요: 10 20 (입력)
30
이렇게 map
을 사용하면 코드를 한 줄로 간단하게 줄일 수 있다.
map
에 관한 자세한 내용은 나중에 확인하자 ( 링크 )