변수와 할당

Tip학습 목표
  • 변수에 값을 할당하고 이를 사용하여 계산을 수행하는 프로그램을 작성합니다.
  • 프로그램 실행에 따른 변수 값의 변화를 추적합니다.
Note질문
  • 데이터를 어떻게 변수에 저장하고 관리하나요?

변수를 사용하여 값을 저장합니다.

  • 변수(Variables)는 값에 붙이는 이름입니다.
  • 변수명 규칙:
    • 문자, 숫자, 밑줄(_)만 포함할 수 있습니다.
    • 숫자로 시작할 수 없습니다.
    • 대소문자를 구분합니다 (age, Age, AGE는 모두 다른 변수입니다).
  • 변수 이름은 코드의 의도를 파악할 수 있도록 의미 있게 짓는 것이 좋습니다.
  • 파이썬에서 = 기호는 오른쪽에 있는 값을 왼쪽에 있는 변수에 할당(대입)한다는 의미입니다.
age = 42
first_name = 'Ahmed'

print를 사용하여 값을 출력합니다.

  • print() 함수는 전달받은 값을 화면에 출력합니다.
  • 함수를 실행하는 것을 호출(call)한다고 하며, 괄호 안에 전달하는 값을 인수(arguments)라고 합니다.
print(first_name, 'is', age, 'years old')
Ahmed is 42 years old
  • print는 여러 인수를 출력할 때 사이에 공백을 자동으로 추가하며, 출력이 끝나면 줄을 바꿉니다.

변수는 사용하기 전에 정의되어야 합니다.

  • 정의되지 않은 변수를 사용하거나 이름을 잘못 입력하면 파이썬은 오류를 발생시킵니다.
# print(last_name)  # NameError 발생
NoteJupyter Notebook의 실행 순서

Jupyter Notebook에서는 셀의 위치보다 실행된 순서가 중요합니다. 이전에 실행한 셀에서 정의된 변수는 메모리에 유지되어 다른 셀에서도 사용할 수 있습니다. 실행 순서가 꼬여 혼란스러울 때는 Kernel -> Restart & Run All을 사용하여 모든 변수를 초기화하고 처음부터 순서대로 실행해 보는 것이 좋습니다.

변수를 사용한 계산

  • 변수를 마치 실제 값처럼 계산식에 사용할 수 있습니다.
age = age + 3
print('Age in three years:', age)
Age in three years: 45

인덱스(Index)를 이용한 문자 추출

  • 문자열 내의 각 문자는 고유한 위치 번호를 가지며, 이를 인덱스(index)라고 합니다.
  • 인덱스는 0부터 시작합니다.
  • 대괄호 [] 안에 인덱스 번호를 넣어 특정 위치의 문자 하나를 가져올 수 있습니다.
atom_name = 'helium'
print(atom_name[0])
h

슬라이스(Slice)를 이용한 부분 문자열 추출

  • 문자열의 일부분을 추출한 것을 부분 문자열(substring)이라고 합니다.
  • [start:stop] 표기법을 사용하여 슬라이싱합니다. start 인덱스부터 stop 인덱스 직전까지의 문자를 가져옵니다.
  • 슬라이싱을 해도 원본 문자열은 변하지 않으며, 지정된 범위의 복사본을 반환합니다.
atom_name = 'sodium'
print(atom_name[0:3])  # 인덱스 0, 1, 2에 해당하는 'sod' 추출
sod

문자열 길이 확인: len

  • len() 함수는 문자열에 포함된 문자의 총 개수를 반환합니다.
print(len('helium'))
6

의미 있는 변수명 사용하기

  • 파이썬 문법만 지킨다면 어떤 이름이든 가능하지만, 자신과 동료가 코드를 쉽게 이해할 수 있도록 명확한 이름을 사용해야 합니다.
# 좋지 않은 예
flabadab = 42
# 좋은 예
age = 42

Important연습 문제

두 변수의 값 맞교환(swap)하기

다음 코드가 실행됨에 따라 변수 xy의 값이 어떻게 변하는지 추적해 보세요.

x = 1.0
y = 3.0
swap = x
x = y
y = swap

최종적으로 x는 3.0, y는 1.0이 됩니다. swap이라는 임시 변수를 사용하여 두 값을 성공적으로 맞교환했습니다.

Important연습 문제

결과 예측하기

다음 코드를 실행했을 때 position 변수의 최종값은 무엇일까요?

initial = 'left'
position = initial
initial = 'right'

'left'입니다. position = initial이 실행될 당시의 initial 값인 'left'가 복사되어 할당되었기 때문입니다. 이후 initial 값이 바뀌어도 position에는 영향을 주지 않습니다.

Important연습 문제

슬라이싱 연습

species_name = "Acacia buxifolia"일 때 다음 결과는 무엇일까요?

  1. species_name[2:8]
  2. species_name[11:]
  3. species_name[:4]
  4. species_name[:]
  1. 'acia b'
  2. 'folia' (끝까지)
  3. 'Acac' (처음부터)
  4. 'Acacia buxifolia' (전체 복사)
Note핵심 요약
  • 변수를 사용하여 데이터를 저장하고 이름을 붙입니다.
  • print() 함수로 데이터를 출력하고 len()으로 길이를 확인합니다.
  • 인덱싱과 슬라이싱을 통해 문자열의 일부를 추출할 수 있습니다.
  • 변수 이름은 대소문자를 구분하며, 의미 있는 이름을 사용하는 것이 권장됩니다.