Chapter 03. 변수와 데이터 형식

이성욱·2024년 3월 25일

변수의 소개

변수의 선언

  • 변수는 어떤 값을 저장하기 위한 메모리 공간, '그릇' 혹은 '상자'라고 생각함
  • 변수는 메모리(memory)에 만들어진다.

변수의 사용

생성된 변수는 다른 값으로 변환 가능

  • 변수에는 정수 뿐만 아니라 실수, 문자열도 저장할 수 있다.
    • 그 외에 파이썬에서 사용하는 모든 자료형 저장 가능
    • 파이썬의 변수는 어떤 데이터도 저장 가능
  • type() 함수는 변수의 종류를 확인하는 명령
<class 'int'>
<class 'float'>
<class 'str'>
<class 'bool'>
  • 파이썬에서 변수의 데이터 형식은 값을 넣는 순간마다 변경될 수 있는 유연한 구조
myVar = 100 # 정수형 변수를 생성함
type(myVar) # <class 'int'>가 출력됨
myVar = 100.0 # 이 순간에 실수형 변수로 변경됨
type(myVar) # <class 'float'>가 출력됨

변수의 값 교환

변수 x와 변수 y의 값을 서로 바꾸는 프로그램을 작성해보자.

x = 10
y = 20
print(x,y) # 10 20
x = y
y = x
print(x,y) # 20 20

이렇게 하면 안됨.

임시 변수를 이용하는 방법

x = 10
y = 20
print(x,y) # 10 20
temp = x
x = y
y = temp
print(x,y) # 20 10

','을 이용하여 변수를 동시에 저장하는 방법 이용

x = 10
y = 20
print(x,y) # 10 20
x,y = y,x
print(x,y) # 20 10

상수

상수(constant)는 한번 값이 결정되면 절대로 변경되지 않는 변수
대문자와 언더바를 이용하여 변수 이름 결정

TAX_RATE = 0.25
PI = 3.141592
MAX_SIZE = 100

다른 프로그램에서는 변경되지 않지만 파이썬에서는 변경가능. 걍 그런줄 알고 일단 알아두고 써라.

비트, 바이트, 진수

비트(Bit)

  • 컴퓨터가 표현할 수 있는 제일 작은 단위로 0과 1만 존재. 즉, 하나의 비트로 표현할 수 있는 가짓수는 2가 됨.
  • 두 개의 전기 스위치(=2비트)를 2진수로 나타내면 각각 00, 01, 10, 11이고 10진수로 나타내면 0,1,2,3임.
  • 즉 3비트로 표현할 수 있는 가짓수는 2^3 = 8이 되고, 4비트로 표현할 수 있는 가짓수는 2^4 = 16임.
  • 16진수는 0~F까지 총 16가지의 숫자로 표현. 16진수가 필요한 이유는 2진수이 네 자리와 16진수 한 자리가 맞아떨어지기 때문임.

바이트(Byte)

8개의 비트가 합쳐진 단위

진수

2진수, 8진수, 16진수 저장

a = 13
b = 0b1101
c = 0o15
d = 0xd
print(a,b,c,d)

2진수, 8진수, 16진수 반환 (bin(), oct(), hex())

a = 13
b = bin(a) # 13을 2진법 변경후 출력 : 2진법
c = oct(a) # 13을 8진법 변경후 출력 : 8진법
d = hex(a) # 13을 16진법 변경후 출력 : 16진법
print(a,b,c,d)

데이터 형식

  • 정수
a = 13
print(a, 20, -5)
  • 실수
b = 3.141592
print(b, 50.0, b + 10.61)
  • 문자열
c = "안녕하세요"
print(c, "Good Morning")
  • 논리형
d = True
print(d, False)

문자열

문자열(string)은 문자들의 순서 있는 집합 (sequence of characters)

  • 큰 따옴표 (") 혹은 작은 따옴표(') 사용
  • 특수 문자 (Escape Sequence)
    • 문자 앞에 \가 붙으면 본래 문자의 의미를 잃어버리고 특수한 기능을 하는 문자가 된다.

데이터 형식 변환

문자열로 변환

str( )

정수로 변환

int( )

실수로 변환

float( )

문자열(String)의 인덱싱(Indexing)과 슬라이싱(Slicing)

문자열 인덱싱이란 문자열에 [기호(연산자)와] 기호(연산자) 사이에 문자 번호를 넣어 문자를 추출하는 방법

  • 모든 문자열은 각 문자마다 번호가 주어짐
    슬라이싱은 인덱싱과는 다르게 : 기호를 넣어 특정 구간의 문자열을 얻어내는 방법
  • 변수명[시작위치:끝위치+1]로 사용

문자열 포매팅

% 문자열 포매팅

  • 서식의 종류
    - 정수: %d, %x(16진수), %o(8진수)
    - 실수: %f
    - 문자열: %s

    사실 이는 print( )의 기능이 아닌 문자열을 만드는 기능임
    : 문자열 포매팅 (String Formating)

a = 100
b = 200
print("%d+%d=%d"%(a,b,a+b))

예외 상황

.format() 이용 문자열 포매팅

  • " {} ".format(값)
a = 100
print("a의 값은 {}".format(a)) # a의 값은 100
b = 50.456
print("a는 {}, b는 {}".format(a,b)) # a는 100, b는 50.456
  • " {인덱스번호}{인덱스번호}{인덱스번호} ".format(값0,값1,값2)
print("a = {}, b = {}, a = {}".format(a,b,a)) # a = 100, b = 50.456, a = 100
  • "{인덱스번호:숫자(d,s,f..)} {인덱스번호:숫자(d,s,f..)} " .format(값0,값1)
print("a = {0}, b = {1}, a = {0}".format(a,b)) # a = 100, b = 50.456, a = 100
  • ,의 사용: "{0:,d}.format(10000)
a = 1230000000
print("a=[{0:12,d}원]".format(a)) # a=[1,230,000,000원]
  • <의 사용: 왼쪽 정렬
print("a = {0:<5d}, b = {1:<8.2f}".format(a,b)) # a = 100  , b = 50.46
  • >의 사용: 오른쪽 정렬
c = "Hello"
print("[{0:8s}]".format(c)) # [Hello   ]
print("[{0:>8s}]".format(c)) # [   Hello]

f-String

내가 아는 그 방법

print(f"{변수} {변수}")

0개의 댓글