코딩도장_Unit 6. 변수와 입력 사용하기

김민주·2022년 1월 1일

AIFFEL_풀잎스쿨

목록 보기
16/23
post-thumbnail

출력된 결과를 저장하기 위해서는 변수(variable)를 사용하여 저장해야 한다.

6.1 변수 만들기

  • 변수이름 = 값
  • 변수가 생성되는 동시에 값이 할당(저장)
  • 변수에는 숫자뿐만 아니라 문자열도 넣을 수 있다.
  • 변수이름 규정 시 지켜야 할 사항
    • 영문 문자와 숫자를 사용할 수 있다.
    • 대소문자를 구분한다.
    • 문자부터 시작해야 하며 숫자부터 시작하면 안 된다.
    • _(밑줄 문자)로 시작할 수 있다.
    • 특수 문자(+, -, *, /, $, @, &, % 등)는 사용할 수 없다.
    • 파이썬의 키워드(if, for, while, and, or 등)는 사용할 수 없다.
>>> x = 10
>>> x
10

>>> y = 'Hello, world!'
>>> y
'Hello, world!

6.1.1 변수의 자료형 알아내기

  • type에 변수를 넣으면 변수(객체)의 자료형이 나온다.
  • int는 정수( integer), str은 문자열(string)
    • type(변수)
>>> type(x)
<class 'int'>
>>> type(y)
<class 'str'>

📎 참고) =기호는 같다는 뜻?
프로그래밍 언어에서 =는 변수에 값을 할당(assignment)한다는 의미

6.1.2 변수 여러 개를 한 번에 만들기

  • 변수이름1, 변수이름2, 변수이름3 = 값1, 값2, 값3
  • 변수와 값의 개수는 동일하게 맞춰주어야 하며 나열된 순서대로 값이 할당
    (변수와 값의 개수가 맞지 않으면 에러 발생)
  • 변수 여러 개를 만들 때 값이 모두 같아도 된다면 변수1 = 변수2 = 변수3 = 값 형식 사용 가능
  • 두 변수의 값을 바꾸려면 변수를 할당할 때 서로 자리를 바꿔주면 된다.
    (변수1, 변수2 = 변수2, 변수1 형식)
>>> x, y, z = 10, 20, 30
>>> x
10
>>> y
20
>>> z
30

# 변수와 값 개수가 같지 않으면
>>> 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 

📎 참고) 빈 변수 만들기
빈 변수를 만들때는 None을 할당해주면 된다.
파이썬에서 None은 아무것도 없는 상태를 나타내는 자료형이다. 보통 다른 언어에서는 널(null)이라고 표현한다.

>> x = None
>> print(x)
None
>> x
>> (아무것도 출력되지 않음)

6.2 변수로 계산하기

변수는 변수끼리 계산이 가능하고 계산 결과를 다른 변수에 할당할 수 있다.

>>> a = 10
>>> b = 20
>>> c = a + b
>>> c
30

6.2.1 산술 연산 후 할당 연산자 사용하기

  • 산술 연산자 앞에 할당 연산자(=)를 붙이면 연산 결과를 변수에 저장
    (단, 두 연산자 사이에 공백이 없어야 한다.)
  • 만들지 않은 변수에 사용하면 에러가 발생
>>> a = 10
>>> a + 20
30
>>> a
10  # 계산 결과가 유지되지 않음

# 값의 변화를 계속 유지하려면 계산 결과를 다시 변수에 저장
>>> a = 10
>>> a = a + 20  # a와 20을 더한 후 결과를 다시 a에 저장
>>> a
30

# 산술 연산 후 할당 연산자
>>> a = 10
>>> a += 20  # a와 20을 더한 후 결과를 다시 a에 저장
>>> a
30

# 만들지 않은 변수 사용
>>> d += 10    # d는 만들지 않은 변수
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    d += 10
NameError: name 'd' is not defined 

📎 참고) 부호 붙이기
부호를 붙어야 하는 경우에는 값이나 변수 앞에 양수, 음수 부호를 붙이면 된다.

>> x = -10
>> +x
-10
>> -x
10

6.3 입력 값을 변수에 저장하기

6.3.1 input함수 사용하기

  • input() : 사용자가 입력한 값을 가져오는 함수
>>> input()
Hello, world! (입력)
'Hello, world!'

6.3.2 input 함수의 결과를 변수에 할당하기

  • 변수=input() : input함수의 결과를 변수에 할당
  • 변수 = input('문자열') : 입력받은 상태 확인 가능
>>> x = input()
Hello, world! (입력)
>>>                # 입력 받은 상태인지 알 수 없다.
>>> x
'Hello, world!'

# 변수 = input('문자열')
>>> x = input('문자열을 입력하세요: ')
문자열을 입력하세요: Hello, world! (입력)
>>> x
'Hello, world!'

6.3.3 두 숫자의 합 구하기

  • input에서 입력받은 값은 항상 문자열 형태
  • 연산을 위해서는 input 결과값을 숫자로 만들어야 한다.
    (문자열 → 정수)
    * 실수를 연산하려면 int 대신 float사용
    • 변수 = int(input())
    • 변수 = int(input('문자열'))
a = input('첫 번째 숫자를 입력하세요: ')
b = input( '두 번째 숫자를 입력하세요:')
 
print(a + b)

첫 번째 숫자를 입력하세요:가 출력되면 10입력 후 엔터, 두 번째 숫자를 입력하세요:가 출력되면 20입력 후 엔터

# 실행결과
첫 번째 숫자를 입력하세요: 10 (입력)
두 번째 숫자를 입력하세요: 20 (입력)
1020
# input 결과 형태 확인
>>> a = input()
10 (입력)
>>> type(a)
<class 'str'>
# 문자열 상태의 결과값을 정수 형태로 변환
a = int(input('첫 번째 숫자를 입력하세요: '))  # int를 사용하여 입력 값을 정수로 변환
b = int(input('두 번째 숫자를 입력하세요: '))  # int를 사용하여 입력 값을 정수로 변환
 
print(a + b)
# 실행결과
첫 번째 숫자를 입력하세요: 10 (입력)
두 번째 숫자를 입력하세요: 20 (입력)
30

6.4 입력 값을 변수 두 개에 저장하기

input에서 split을 사용하면 한 번에 여러 개 값을 입력받을 수 있다. (각 변수는 콤마(,)로 구분)

  • 변수1, 변수2 = input().split()
  • 변수1, 변수2 = input().split('기준문자열')
  • 변수1, 변수2 = input('문자열').split()
  • 변수1, 변수2 = input('문자열').split('기준문자열')
a, b = input('문자열 두 개를 입력하세요: ').split()    # 입력받은 값을 공백을 기준으로 분리
 
print(a)
print(b)

문자열 두 개를 입력하세요:가 출력되면 Hello Python입력 후 엔터

# 실행결과
문자열 두 개를 입력하세요: Hello Python (입력)
Hello    # 공백 기준으로 분리되어 변수 a에 저장
Python   # 공백 기준으로 분리되어 변수 b에 저장

6.4.1 두 숫자의 합 구하기

  • input에서 입력받은 값은 문자열이고, 이 문자열은 split으로 분리해도 문자열이다.
a, b = input('숫자 두 개를 입력하세요: ').split()    # 입력받은 값을 공백을 기준으로 분리
 
print(a + b)
# 실행결과
숫자 두 개를 입력하세요: 10 20 (입력)
1020

6.4.2 입력 값을 정수로 변환하기

  • 연산을 위해서는 변수를 정수로 변환
a, b = input('숫자 두 개를 입력하세요: ').split()    # 입력받은 값을 공백을 기준으로 분리
a = int(a)    # 변수를 정수로 변환한 뒤 다시 저장
b = int(b)    # 변수를 정수로 변환한 뒤 다시 저장
 
print(a + b)
# 실행결과
숫자 두 개를 입력하세요: 10 20 (입력)
30
# print 안에서 int로 변환하고 연산해도 무방
print(int(a) + int(b))

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

  • map에 intinput().split()을 넣으면 split의 결과를 모두 int로 변환
    (실수로 변환 시에는 float 사용)
    • 변수1, 변수2 = map(int, input().split())
    • 변수1, 변수2 = map(int, input().split('기준문자열'))
    • 변수1, 변수2 = map(int, input('문자열').split())
    • 변수1, 변수2 = map(int, input('문자열').split('기준문자열'))
a, b = map(int, input('숫자 두 개를 입력하세요: ').split())
 
print(a + b)
# 실행결과
숫자 두 개를 입력하세요: 10 20 (입력)
30

6.4.4 입력받은 값을 콤마를 기준으로 분리하기

  • split에 기준 문자열을 지정하여 다른 문자로 분리
a, b = map(int, input('숫자 두 개를 입력하세요: ').split(',')) # 입력받은 값을 콤마를 기준으로 분리
 
print(a + b)
# 실행결과
숫자 두 개를 입력하세요: 10,20 (입력)
30

6.5 연습문제: 정수 세 개를 입력받고 합계 출력하기

다음 소스 코드를 완성하여 정수 세 개를 입력받고 합계가 출력되게 만드세요.

# 문제 
______________________________________ 
 
print(a + b + c)
# 실행결과
-10 20 30 (입력)
40
# 정답
a, b, c = map(int, input().split())

정수를 세 개 입력받으려면 input에서 split을 사용한 뒤 변수 세 개에 저장
input().split()의 결과는 문자열이므로 mapint를 사용하여 정수로 변환

profile
안녕하세요 :-) 잘 부탁드립니다!

0개의 댓글