본문 바로가기

Programming/#Python

[Python] 변수와 연산자 (1) (실습 결과 포함)

본 포스팅은 책 「두근두근 파이썬」을 참고하여 공부한 내용의 정리본입니다. 

 

 

 


이전 게시글

두근두근 파이썬 Chapter 1

2021/01/06 - [Programming/#Python] - [Python] 두근두근 파이썬 Chapter 1 (실습 결과 추가)

[Python] 두근두근 파이썬 Chapter 1 (실습 결과 추가)

본 포스팅은 책 「두근두근 파이썬」을 참고하여 공부한 내용의 요약본입니다. 0. 들어가며 컴퓨터에 일을 시키려면 인간의 자세한 명령(instruction)을 주어야 한다. 이러한 명령들을 적어놓은 문

jiwon-lee-it.tistory.com


0. 들어가며

이번 포스팅에서는 이전 포스팅에서 다루었던 print() 함수에 대해 좀 더 자세히 다뤄보고, 변수의 개념을 활용하여 값을 그대로 사용하는 것에 비해 효율적인 스크립트를 작성해볼 것이다. 또한, 변수의 자료형과 식별자, 그리고 키워드에 대해 이해해보고자 한다. 

 

1. 파이썬의 출력함수 print()

우리는 print() 함수를 통해 코드의 내용을 화면에 출력할 수 있다. 이러한 동작이 가능한 두 가지 모드가 있는데, 이는 대화식 실행모드와 스크립트식 실행모드이다. 대화식 실행모드는 이전 시간에 다룬 Python Shell과 같이 간단한 코드를 테스트하는 목적으로 적합하며, 사용자는 엔터키를 입력하여 명령에 대한 즉각적인 반응(feedback)을 받을 수 있다.

>>> print("Hello Python!")
Hello Python!

 

반면, 스크립트 실행모드는 비교적 복잡한 로직이 있는 코드를 실행할 때 적합하며, '.py'라는 확장자의 스크립트 전체를 인터프리터를 통해 실행시키는 방법이다. 

# 잘못된 코드를 입력한 경우 
>>> print(Hello Python!)
...
SyntaxError: invalid syntax # 구문오류: 유효하지 않은 구문

# 문자열과 숫자는 쉼표로 구분
>>> print('My age is', 20)
My age is 20

>>> print('오늘의 걸음 수', 8000, '걸음')
오늘의 걸음 수 8000 걸음

# '*' 연산 + 문자열 --> 문자열의 반복 수 지정
>>> print("Hello" * 2)
Hello Hello

>>> print("Hello" * 4)
Hello Hello Hello Hello 

 

LAB 2-1
>>> print('나의 이름은:', '홍길동')
나의 이름은: 홍길동

>>> print('나의 나이는:', 27)
나의 나이는: 27

>>> print('나의 키는', 179, 'cm 입니다.')
나의 키는 179 cm 입니다.

# 연산 결과 활용 가능
>>> print('10 + 20 =', 10 + 20)
10 + 20 = 30

>>> print('10 * 20 =', 10 * 20)
10 * 20 = 200

 

위의 명령 코드들을 스크립트 파일로 작성한 후 실행한다면 전체 결과가 한 번에 출력될 것이다.

 

2. 변수와 친해지기
변수를 사용하지 않는 경우 (circle.py)

아래의 스크립트는 IDLE에서 코딩 후 스크립트 파일로 저장할 수 있다. 

# 원의 반지름, 면적, 둘레를 출력하는 프로그램
print('원의 반지름', 4.0)
print('원의 면적', 3.14 * 4.0 * 4.0)
print('원의 둘레', 2.0 * 3.14 * 4.0)

# Results
원의 반지름 4.0 # r
원의 면적 50.24 # pi * r^2
원의 둘레 25.12 # 2 * pi * r

 

이 경우, 원의 반지름이 변할 때마다 코드를 수정해줘야 한다는 단점이 있다. 이때, 코드 수정은 사람의 수작업으로 진행되기 때문에 의도한 바와 다른 결과를 출력하는 논리 오류를 범할 수 있다. 

 

 

 

변수 (variable)의 도입

위의 프로그램과 같이 계속해서 값을 변경해줘야 하는 프로그램의 경우, 논리 오류가 발생할 수 있음을 확인했다. 이때, '변수'를 활용하면 수정의 번거로움을 줄일 수 있다는 점에서 문제를 해결할 수 있다. 이번에는 원의 반지름을 일일이 입력해주는 대신 변수의 개념을 도입하여 위의 circle.py 프로그램을 변형해보겠다. 

# 변수를 이용해 원의 면적과 둘레를 구하기
radius = 4.0
print('원의 반지름', radius)
print('원의 면적', 3.14 * radius * radius)
print('원의 둘레', 2 * 3.14 * radius)

# Results (동일한 결과)
원의 반지름 4.0
원이 면적 50.24
원의 둘레 25.12

 

이와 같이 변수를 이용한 프로그램을 짜두면, 이후 반지름의 값을 변경해야 할 때도 radius의 값만 바꿔주면 되기에 훨씬 수월하고 정확하다. 

 

메인 메모리 (main memory)와 메모리 주소 (memory address)

'메인 메모리'는 컴퓨터의 데이터가 저장돼 읽기, 쓰기, 덮어쓰기 (수정)을 하는 공간을 의미하며 '메모리'라고도 불리는 공간이다. 이때 메모리 상에 데이터가 저장되는 위치를 '메모리 주소'라고 하며, 보통 16진수로 표현된다. 데이터의 읽기, 쓰기, 수정을 위해서는 이 메모리 주소를 반드시 알고 있어야 하지만, 보통 식별자로 대신한다.

 

메모리 주소

 

 

변수 (variable)와 식별자 (identifier)

변수 (variable)의 사전적 정의는 '변할 수 있는 수'이다. 반면, 프로그램에서 쓰이는 '변수'의 '수'는 단순한 수치라기 보다는 데이터로 이해하는 것이 더 정확하다. 이러한 변수는 컴퓨터에 값을 저장하는 메모리 공간에 이름으로써 고유의 이름을 통해 데이터에 대한 읽기, 쓰기, 수정하기가 가능하다. 이때 메모리 공간은 데이터 값 저장을 위해 할당되는 용량이다.

반면, 식별자 (identifier)란 사용자가 정의하는 각각의 변수, 함수에 부여되는 서로 다른 이름을 뜻한다. 변수 이름이 메모리 위치를 지칭하는만큼, 하나의 변수명을 여러 대상이 공유하게 되면 혼선이 생길 수 있기에 식별자를 적절히 지정하는 것은 무엇보다 중요하다. 

 

 

변수에 할당된 값을 변경하면 저장공간(메모리)의 정보도 변경된다.

 

 

비트 (bit)와 바이트 (byte)

컴퓨터에서 정보를 표현할 때, 그 단위로 '비트'와 '바이트'가 있다. 비트는 정보 표현의 최소 단위로서, 0과 1을 이용하여 정보를 표현한다. 반면, 하나의 비트만으로는 표현 가능한 정보의 양의 한계가 있기 때문에 보통 8비트 단위로 묶은 바이트 단위로 저장한다. 여기서 1 바이트는 2^8 (256) 가지의 서로 다른 상태 정보를 표현할 수 있다. 

 

3. 변수의 선언
리터럴 (literal)

프로그래밍 언어에서 데이터의 값을 나타낸다. 아래의 예제에서는 변수에 할당되는 값인 '홍길동', 10, 5 가 이에 해당한다. 

# 할당 연산자 '='로 값을 참조
>>> name = '홍길동' # 문자형 literal
>>> print('이름:', name)
이름: 홍길동

>>> width = 10 # 숫자형 literal
>>> height = 5
>>> rectangle_area = width* height
>>> print('사각형의 면적:', rectangle_area)
사각형의 면적: 50

 

LAB 2-4
# 변수에 한 번 저장된 값은 계속 기억된다. 
>>> name = '전우치'
>>> print('나의 이름은:', name)
나의 이름은: 전우치

>>> age = 27
>>> print('나의 나이는:', age)
나의 나이는: 27

>>> height = 179
>>> print('나의 키는', height, 'cm 입니다.')
나의 키는 179 cm 입니다.

>>> sum = 10 + 20
>>> print('10 + 20 =', sum)
10 + 20 = 30

>>> mult = 10 * 20
>>> print('10 * 20 =', mult)
10 * 20 = 200

 

식별자 (identifier)의 정의와 규칙

식별자는 변수, 함수, 클래스 등을 다른 것과 구분지어주는 교유한 이름을 말하며, 단순한 프로그램일 때는 a, b, n, m 과 같이 표현할 수 있으나, 복잡한 프로그램의 경우, walk_distance, num_of_hits와 같이 의미를 정확히 하는 식별자를 사용해야 한다. 

  • 문자와 숫자, 밑줄 문자(_)의 조합으로 이루어진다.
  • 중간에 공백이 들어가면 안 된다. 
  • 첫 글자는 반드시 문자나 밑줄 문자(_)로 시작해야 한다.
  • 대문자와 소문자는 구분되므로, Count와 count는 구별된다.
  • 식별자 길이에 제한은 없다.
  • 키워드는 식별자로 사용할 수 없다. 

 

 

 

키워드 (keyword) 혹은 예약어 (reserved word)

키워드란 이미 예약된 문자로 사전에 지정된 역할을 수행하기 때문에 식별자로 사용할 수 없다. 대표적인 키워드(예약어)로는 import, for, if, else, class, def 등이 있다. 이러한 키워드 혹은 내장함수명을 식별자로 사용하는 경우, 변수의 저장은 가능하나 호출 시 오류 (Type Error)가 발생한다.

>>> sum = 100
>>> lst = [10, 20, 30]
>>> total = sum(lst)
...
TypeError: 'int' object is not callable

 

파이썬의 키워드 목록

 

 

협업 측면에서도 좋은 변수의 이름을 선택하는 것은 필요한데, 그 방법 중 낙타등 표기법 (Camel Case)가 있다. 이는 'CapitalizedWords', 'mixedCase'처럼 언더 바 (_) 대신 대/소문자로 단어를 구분하는 방법이다. 

# 변수에 새로운 값을 할당하기(변수 값의 재지정)
>>> name = '홍길동'
>>> age = 27
>>> print('안녕! 나는', name, '이야. 나는 나이가', age, '살이야.')
안녕! 나는 홍길동이야. 나는 나이가 27 살이야.

>>>> name = '홍길순' #update
>>> age = 23
>>> print('안녕! 나는', name, '이야. 나는 나이가', age, '살이야.)
안녕! 나는 홍길순이야. 나는 나이가 23 살이야.

다음 게시글

두근두근 파이썬 Chapter 2 변수와 연산자 (2)

2021/01/08 - [Programming/#Python] - [Python] 두근두근 파이썬 Chapter 2 변수와 연산자 (2) (실습 결과 포함)

[Python] 두근두근 파이썬 Chapter 2 변수와 연산자 (2) (실습 결과 포함)

본 포스팅은 책 「두근두근 파이썬」을 참고하여 공부한 내용의 정리본입니다. 이전 게시글 두근두근 파이썬 Chapter 2 변수와 연산자 (2) 2021/01/07 - [Programming/#Python] - [Python] 두근두근 파이썬 Chap..

jiwon-lee-it.tistory.com

 

 


 

 

 

I'm a Senior Student in Data Science ! 

데이터 사이언스를 공부하고 있는 4학년 학부생의 TIL 블로그입니다. 게시글이 도움 되셨다면 구독과 좋아요 :)