파이썬 | 변수와 입력 사용하기

1. 변수 만들기

변수 할당을 하는데 파이썬에는 다음과 같은 규칙들이 있다.

  • 영문 문자와 숫자를 사용할 수 있다.
  • 대소문자를 구분한다.
  • 변수 이름은 문자로 시작해야하며 숫자로 시작할 수는 없다.
  • _(밑줄문자) 를 사용할 수 있다.
  • 특수 문자(+, -, *, /, $, @, &, % 등)은 사용할 수 없다.
  • 파이썬 키워드 (if, for, while, and, or 등)는 사용할 수 없다.

또한 파이썬은 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 )

변수를 삭제하고자 한다면 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 
>>>

빈 변수 만들기 ( None)

>>> x = None
>>> x
>>> print(x)
None

변수를 만들고 None 을 할당한다면 빈 변수를 만들 수 있다.

보통 다른 언어에서는 NULL 이라고 표현하는데 파이썬에서는 None 이라고 한다.

2. 입력 값 변수 지정

input 함수 사용하기

>>> 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

map 사용하여 정수로 변환하기

split 결과를 매번 int 로 바꿔주는 작업이 상당히 번거롭다. 이때 map 을 함께 사용하면 된다.

a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
 
print(a + b)
숫자 두 개를 입력하세요: 10 20 (입력)
30

이렇게 map 을 사용하면 코드를 한 줄로 간단하게 줄일 수 있다.

map 에 관한 자세한 내용은 나중에 확인하자 ( 링크 )

좋은 웹페이지 즐겨찾기