Day13 - Python03-변수,숫자,문자열,시퀀스,딕셔너리,셋

January 25, 2017

Day13 - Python03-변수,숫자,문자열,시퀀스,딕셔너리,셋

##1.변수

파이썬은 모든것(정수, 문자열, 함수 등)이 객체(Object)로 이루어져 있다.
객체는 데이터의 형태를 결정해주는 타입으로, 파이썬에서는 객체의 타입을 바꿀 수 없다.

프로그래머는 변수를 선언하고 사용하는 형태로 컴퓨터의 메모리에 값을 할당하고, 참조할 수 있다. 파이썬에서는 값을 할당할때 =기호를 사용한다.

일반적으로, 프로그래밍 언어에서 같다(Equal)의 의미는 =이 아닌 ==이 담당한다.


다음과 같은 코드는 var1이라는 이름을 가진 변수에 100의 정수를 할당하고, print를 이용해 var1변수가 가진 값을 출력한다.

>>> var1 = 100
>>> print(var1)
100

변수는 단지 이름일 뿐이며, 그 자체가 어떠한 값을 갖는것이 아니다.
위의 경우 var1이라는 변수는 100이란 데이터를 직접 가지는 것이 아니며, 100이라는 정수형 객체가 있고 a는 단순히 해당 객체를 참조하는 역할을 한다.

아래와 같이 명령어를 입력한다.

>>> var2 = var1
>>> var3 = var1
>>> var4 = var1

어떠한 변수가 참조하고 있는 객체가 메모리 상에서 가지고 있는 고유의 주소(id)를 출력하는 id내장함수를 사용해본다.

>>> id(var1)
4520513888
>>> id(var2)
4520513888
>>> id(var3)
4520513888
>>> id(var4)
4520513888

모든 변수들이 같은 객체를 가리키는 것을 볼 수 있다.

변수는 언제든 다른 객체를 가리킬 수 있다.

>>> var1 = 101
>>> id(var1)
4520513920

var1이 다른 객체를 참조하도록 변경했을 때, var2, var3, var4가 기존에 var1을 참조하던 것이 아닌, var1이 참조하던 객체를 참조했다는 것을 확인할 수 있다.

>>> id(var1)
4520513920
>>> id(var2)
4520513888
>>> id(var3)
4520513888
>>> id(var4)
4520513888

변수의 타입 확인

내장함수 type사용

>>> type(var1)
<class 'int'>

정수(Integer)형 변수임을 알 수 있다.

>>> type('안녕하세요')
<class 'str'>

문자열은 str(문자열)형임을 나타낸다.

위의 출력에서, 클래스(class)는 객체의 타입(정의)을 나타낸다.
classtype은 거의 같은 의미로 사용된다.

변수의 이름 제한

사용가능한 문자

이름은 숫자로 시작할 수 없으며, 언더스코어로 시작하는 변수명은 특별한 처리방법을 따르므로 일반적으로 사용하지 않는다.

예약어

아래 예약어들은 파이썬 구문을 정의하는데 사용되기 때문에 변수로 사용할 수 없다.

False, class, finally, is, return,
None, continue, for, lambda, try,
True, def, from, nonlocal, while,
and, del, global, not, with,
as, elif, if, or, yield,
assert, else, import, pass,
break, except, in, raise

변수의 입력과 출력

입력은 내장함수 input 사용

>>> var = input()

입력받는 프롬프트를 띄우려고 할 경우, input에 문자열을 인자로 전달해준다.

>>> var = input('숫자를 입력해주세요 : ')

출력은 내장함수 print 사용

>>> print(var)

실습

  1. 1일이 몇 초인지 계산 후, 해당 결과를 seconds_per_day 변수에 할당하라.
  2. 1년이 몇 초인지 계산 후, 해당 결과를 seconds_per_year 변수에 할당하라.
  3. 각 변수의 타입을 확인해본다.
  4. 문자열을 입력해주세요 : 라는 안내문구를 띄워주도록 input함수를 사용해본다. 결과는 var에 할당한다.
In [23]: second = 60

In [24]: minute = 60

In [25]: hour = 24

In [26]: day = 365

In [27]: year = day * hour * minute * second

In [28]: year
Out[28]: 31536000

In [29]: day = hour * minute * second

In [30]: day
Out[30]: 86400

In [31]: a = 123

In [32]: type(a)
Out[32]: int

In [33]: b = "123"

In [34]: type(b)
Out[34]: str

In [35]: var = input('문자열을 입력해주세요:')
문자열을 입력해주세요:ㅗ  hello

In [36]: var
Out[36]: 'hello'

#2.내장데이터 타입 (숫자)

수학 연산자

연산자 설명 결과
+더하기32 + 739
-빼기82 - 280
*곱하기3 * 721
/나누기7 / 23.5
//정수나누기7 // 23
%나머지7 % 31
**지수2**101024

산술 연산자 결합

a에 100을 할당하고, 3을 뺀 결과를 다시 a에 할당한다.

>>> a = 100
>>> result = a - 3
>>> a = result
>>> print(a)
97

위 코드는 아래와 같이 줄여서 사용가능하다.

>>> a = 100
>>> a = a - 3
>>> print(a)
97

위 코드는 산술 연산자 결합으로 아래와 같이 사용가능하다.

>>> a = 100
>>> a -= 3
>>> print(a)
97

우선순위

>>> 10 + 5 * 4

우선순위 규칙이 적용되지만, 가독성에 문제가 있을 경우 괄호로 묶어준다.

>>> 20 + (300 + 25 * 4)

진수(base)

기본적으로 숫자형 데이터는 10진수로 간주되지만, 파이썬에서는 2진수, 8진수, 16진수를 표현할 수 있다.

>>> 10
10
>>> 0b10
2
>>> 0o10
8
>>> 0x10
16

형변환

내장함수 int, float를 사용

>>> int("35")
35


실습

  1. 양수 1234를 표현해본다.
  2. 음수 100을 표현해본다.
  3. 10과 3의 덧셈, 뺄셈, 곱셈, 나눗셈, 정수나눗셈, 나머지, 지수 연산을 실행해본다.
  4. c에 60을 할당 후, 산술 연산자 결합으로 아래 목록을 표현해본다.
  5. 부동소수점수형 변수를 정수형으로 형변환 해본다.
  6. 정수형 변수를 부동소수점형으로 형변환 해본다.

In [88]: 1234
Out[88]: 1234

In [89]: -100
Out[89]: -100

In [90]: 10 + 3
Out[90]: 13

In [91]: 10 - 3
Out[91]: 7

In [92]: 10 * 3
Out[92]: 30

In [93]: 10 / 3
Out[93]: 3.3333333333333335

In [94]: 10 // 3
Out[94]: 3

In [95]: 10 % 3
Out[95]: 1

In [96]: 10 ** 3
Out[96]: 1000

In [97]: c = 60

In [98]: c / 40
Out[98]: 1.5

In [99]: c // 40
Out[99]: 1

In [100]: c % 40
Out[100]: 20

In [101]: int(444.555)
Out[101]: 444

In [102]: float(3434)
Out[102]: 3434.0