본문 바로가기

03. Python

02. 변수와 자료형

728x90

변수

자료형의 값을 저장하는 공간, 변수

  • 변수란?
    • 파이썬에서 사용하는 변수는 객체를 가리키는 것이라고 할 수 있음
      • 객체 = 자료형
      • [1, 2, 3] 값을 가지는 리스트 데이터(객체)가 자동으로 메모리에 생성됨
      • 변수 a는 [1, 2, 3] 리스트가 저장된 메모리의 주소를 가리킴
        • id( ) 함수를 사용하여 메모리 주소 확인
        >>> a = [1, 2, 3]
        >>> id(a)
        4303029896
        
>>> num = 10
# '10' 데이터를 메모리 공간에 저장하고,
# 10이 저장된 "메모리 공간의 주소"를 'num'이라고 하는 메모리 공간에 저장
[ 변수: num ] → [ 값: 10 ]
 ⇖ 주소: 0x1000  ⇖ “주소: 0x1000”의 값
  • 변수
    • 변수의 예
    >>> a = 1
    >>> b = “python”
    >>> c = [1, 2, 3]
    
    • 변수 선언 방법
      • =(assignment) 기호를 사용
      • 변수_이름 = 변수에_저장할_값
변수의 명명 규칙
1. 문자(A-z)와 숫자(0-9), _(underscore)를 사용할 수 있음
    - Ex. data = 0, _al = 2, name = 'king'
2. 변수명은 대소문자가 구분됨
    - Num과 num은 다른 변수임
3. 변수명은 의미 있는 단어로 사용하는 것이 좋음
    - Ex.의미 있는 단어. age, student_name, student number
4. 변수명이 숫자로 시작하면 할 수 없음
    - Ex. 1num
5. 변수명에는 공백이 포함될 수 없음
    - Ex. student name
6. 예약어를 변수명으로 사용할 수 없음
    - Ex. for, if, True 등
  • 리스트의 복사
    • b 변수에 a 변수를 대입하면 a가 가리키는 주소 값을 b도 같은 주소 값을 가진다.
    >>> a = [1, 2, 3]
    >>> b = a
    
    • Id( ) 함수로 확인
    >>> id(a)
    4303029896
    >>> id(b)
    4303029896
    
    • 파이썬 명령어로 확인
    >>> a is b
    True
    
    • 다른 방법으로 확인
    >>> a[1] = 4
    >>> a
    [1, 4, 3]
    >>> b
    [1, 4, 3]
    
  • 변수를 만드는 여러 가지 방법
    • 튜플
    >>> (a, b) = ‘python’, ‘life’
    # 괄호 생략 가능
    >>> a, b = ('python', 'life')
    >>> a, b = 'python', 'life'
    
    • 리스트
    >>> [a, b] = [‘python’, ‘life’]
    
    • 여러 개 변수에 같은 값 대입하기
    >>> a = b = ‘python’
    # 데이터 부의 연산은 오른쪽에서 왼쪽으로 진행
    
    • 파이썬에서 두 변수 값 바꾸기
    >>> a = 3
    >>> b = 5
    >>> a, b = b, a  <- a와 b의 값을 바꿈.
    >>> a
    5
    >>> b
    3
    
  • input( ) 함수
    • 파이썬에서는 콘솔 창에서 입력을 받기 위해 표준 입력 함수인 input() 함수 사용
      • input() 함수의 반환 값은 항상 문자열
    • print( ) 함수를 이용한 데이터의 출력
      • print( ) 함수 안에 있는 콤마(,)를 이용해 여러 값을 연결öH 화면에 출력 가능
    • EXAMPLE.
      • 'Hello' , 'Python' : 사이에 한 간 띄고 화면에 출력됨
        • ⇒ ”Hello Python"print( ) 함수
      • ※ 문자형 간에 + 기호를 이용해 문자열을 연결할 수 있음
서식 값의 예 설명
%d, %x, %o 10, 100, 1234 정수( 10진수, 16진수, 8진수)
%f 0.5, 1.0, 3.14 실수(소수점이 붙은 수)
%c “b”, “한” 한 글자
%s "안녕”, “hello”, “a” 두 글자 이상인 문자열

프로그래밍의 기초, 자료형

  1. 숫자형
  2. 문자형
  3. BOOL

자료형

  • 프로그램에서 나타낼 수 있는 데이터의 종류
  • 할당 받는 메모리 공간의 크기는 변수의 자료형(Data Type)에 의해 결정됨
    • 변수에 저장될 자료의 형에 따라 구분
      • 숫자형 : 정수(int), 실수(float)
      • 문자형 : 문자열(str)
      • 논리형 : 불린(boolean)
      • 컬렉션형 : 리스트(list), 튜플(tuple), 집합(set), 딕셔너리(dictionary)
      • None
  • 동적 타이핑
    • 변수의 메모리 공간을 생성하는 시점이 프로그램이 실행되는 시점에 생성되는 것을 의미
    • Ex. 컴파일 언어의 경우, int num=10n.h 같이 실행 이전에 변수의 타입을 정의
    • Ex. 파이썬의 경우, num=8과 같이 선언함

숫자형(number)

  • 숫자 형태로 이루어진 자료형
항목  파이썬 사용 예
정수 123, -345, 0
실수 123.45, -1234.5, 3.4e10
8진수 0o34, 0o25
16진수 0x2A, 0xFF
  • 정수형(integer)
    • 정수를 뜻하는 자료형
    • 8진수(octal)
    • 숫자 0 + 알파벳 소문자 o 또는 대문자 O
    • 16진수(hexadecimal)
    • 숫자 0 + 알파벳 소문자 x
>>> a = 123  # 양의 정수 대입
>>> a = -178  # 음의 정수 대입
>>> a = 0  # 숫자 0 대입
>>> a = 0o177
>>> print(a)
127  # ← 1 *8^2 + 7 * 8^1 + 7 *8^0 = 127

>>> a = 0x8ff
>>> b = 0xABC
>>> print(b)
2758  # ← 10 *16^2 + 11 *16^1 + 12 *16^0 = 2748
  • 실수형(floating-point)
    • 소수점이 포함된 숫자
>>> a = 1.2
>>> a = -3.45
>>> a = 4.24E10  <- 4.24 * 10^10
>>> b = 4.24e-10  <- 4.24 * 10^-10
  • 숫자형을 활용하기 위한 연산자
    • 사칙 연산
    >>> a = 3
    >>> b = 4
    >>>a + b
    7
    >>>a - b
    - 1
    >>>a * b
    12
    >>>a / b
    0.75
    
    • x의 y제곱을 나타내는 ** 연산자
    >>> a = 3
    >>> b = 4
    >>> a ** b
    81
    
    • 나눗셈 후 나머지를 리턴하는 % 연산자
    >>> 7 % 3
    1
    >>> 3 % 7
    3
    
    • 나눗셈 후 몫을 리턴하는 // 연산자
    >>> 7 // 4
    1
    

문자열(string) 자료형

  • 문자열(string)
    • 문자, 단어 등으로 구성된 문자들의 집합, 시퀀스 라고도 함.
    "Life is too short, You need Python"
    "a"
    "123"
    
  • 문자열 생성
    1. 큰따옴표(“)
    "Hello World"
    
    1. 작은따옴표(‘)
    'Python is fun'
    
    1. 큰따옴표 3개(“””) # 개행 또는 Tab 모두 포함한 문자열 ~ ex. SQL 가독성 있게 작성 시, 사용
    """Life is too short, You need python"""
    
    1. 작은따옴표 3개(‘’’)
    '''Life is too short, You need python'''
    
  • 문자열 안에 작은따옴표나 큰따옴표를 포함
    1. 작은따옴표(‘)
    • 큰따옴표(“)로 둘러싸기
    >>> food ="Python's favorite food is per"
    
    1. 큰따옴표(“)
    • 작은따옴표(‘)로 둘러싸기
    >>> say = '"Python is very easy." he says.'
    
    1. 역슬래시 사용하기
    • 역슬래시(\) 뒤의 작은따옴표(‘)나 큰따옴표(“)는 문자열을 둘러싸는 기호의 의미가 아니라 문자 (‘), (“) 그 자체를 의미
    >>> food = 'Pyhton\\'s favorite food is perl'
    >>> say = "\\"Python is very easy.\\” he says."
    
  • 개행이 있는 문자열을 변수에 대입
    1. 이스케이프 코드 ‘\n’ 삽입
    2. 작은 따옴표 3개(‘’’)
    3. 큰 따옴표 3개(“””)
  • 문자열 연산하기
    1. 문자열 더해서 연결하기
    >>> head = "Python"
    >>> tail = " is fun"
    >>> head + tail
    'Python is fun'
    
    1. 문자열 곱하기
    >>> a = "python"
    >>> a * 2
    'pythonpython'
    
    1. 문자열 길이 구하기
      • 파이썬 내장 함수 len() 사용
    >>> a = "Life is too short"
    >> len(a)
    17
    
  • 문자열 인덱싱과 슬라이싱
    • 문자열 인덱싱(indexing)
      • 0 index : 0~ (N-1)
      • a[index]
        • 문자열 안의 특정 값을 추출
        • 마이너스(-) : 문자열 마지막 index 뒤부터 시작
    • 문자열 슬라이싱(slicing)
      • 각 요소 문자를 특정 위치에서부터 잘라 냄
      • a[시작 index : 끝 index]
        • 시작 번호부터 끝 번호까지의 문자를 뽑아 냄
        • 끝 번호에 해당하는 것은 포함하지 않음 → 탈출 위치

문자열 포매팅

  • 문자열 포매팅(formatting)
    • 특정 문자열 형식으로 문자열 형식 정의 → 문자열의 특정 위치에 값을 삽입
    1. 숫자 바로 대입
      • 문자열 포맷 코드 %d
    2. 문자열 바로 대입
      • 문자열 포맷 코드 %s
    3. 숫자 값을 나타내는 변수로 대입
    4. 2개 이상의 값 넣기
# 1.EXAMPLE.%d.
>>> "I eat %d apples." % 3
'I eat 3 apples.'
# 2.EXAMPLE.%s.
>>> "I eat %s apples." % "five"
'I eat five apples.'
# 3.EXAMPLE.숫자값의 변수로 대입.
>>> number = 3
>>> "I eat %d apples." %number
'I eat 3 apples.'
# 4.EXAMPLE.2개 이상의 값 대입.
>>> number = 10
>>> day = "three"
>>> "I ate %d apples. so I was sick for %s days." % (number, day)
'I ate 10 apples. so I was sick for three days.'
  • 문자열 포맷 코드
    • 문자열 포맷 코드의 종류
    코드 설명
    %s 문자열(string)
    %c 문자 1개(character)
    %d 정수(integer)
    %f 부동소수(floating-point)
    %o 8진수
    %x 16진수
    %% Literal %(문자 % 자체)
    # 숫자를 문자열 코드 포맷팅 가능
    >>> "I have %s apples" % 3 
    'I have 3 apples' 
    >>> "rate is %s" % 3.234 
    'rate is 3.234'
    
  • 포맷 코드와 숫자 함께 사용하기
    1. 정렬과 공백
      • %s를 숫자와 함께 사용하면, 공백과 정렬 표현 가능
    >>> "%10s" % "hi"
    '        hi'  # 전체 길이 10에서, (앞에 공백 8개가 위치하므로) hi가 오른쪽 정렬됨.
    >>> "%-10sjane" % "hi"
    'hi        jane'  # 'jane' 앞에 길이 10에서, ('hi' 뒤와 'jane' 앞에 공백 8개 위치하므로) hi가 왼쪽 정렬됨.
    
    1. 소수점 표현하기
      • %f를 숫자와 함께 사용하면, 소수점 뒤에 나올 숫자의 개수 조절 및 정렬 가능
    >>> "%0.4f" % 3.141592
    '3.1415'
    >>> "%10.4f" % 3.141592
    '    3.14159'  # 전체 길이 10에서 "소수점과 뒤 4자리"를 제외한 5자리에서 오른쪽 정렬되어 앞에 공백 4개
    
  • format 함수를 사용한 포매팅
    • 숫자 바로 대입
    >>> "I eat {0} apples".format(3)
    'I eat 3 apples'
    
    • 문자열 바로 대입
    >>> "I eat {0} apples".format("five")
    'I eat five apples'
    
    • 숫자 값을 가진 변수로 대입
    >>> number = 3
    >>> "I eat {0} apples".format(number)
    'I eat 3 apples'
    
    • 2개 이상의 값 넣기
    >>> number = 10
    >>> day = "three"
    >>> "I ate {0} apples. so I was sick for {1} days.".format(number, day)
    'I ate 10 apples. so I was sick for three days.'
    
    • 이름으로 넣기
    >>> "I ate {number} apples. so I was sick for {day} days.".format(number=10, day=3)
    'I ate 10 apples. so I was sick for 3 days.'
    
    • 인덱스와 이름을 혼용해서 넣기
    >>> "I ate {0} apples. so I was sick for {day} days.".format(10, day=3)
    'I ate 10 apples. so I was sick for 3 days.'
    
    • 왼쪽 정렬 & 오른쪽 정렬 & 가운데 정렬
    >>> "{0:<10}".format("hi")
    'hi        '
    >>> "{0:>10}".format("hi")
    '        hi'
    >>> "{0:^10}".format("hi")
    '    hi    '
    
    • 공백 채우기
    >>> "{0:=^10}".format("hi")
    '====hi===='
    >>> "{0:!<10}".format("hi")
    'hi!!!!!!!!'
    
    • 소수점 표현하기
    >>> y = 3.42134234
    >>> "{0:0.4f}".format(y)
    '3.4213'
    >>> "{0:10.4f}".format(y)
    '    3.4213'
    
    • { 또는 } 문자 표현하기
    >>> "{{ and }}".format()
    '{ and }'
    

f 문자열 포매팅

  • 파이썬 3.6 버전부터 f 문자열 포매팅 기능 제공
  • 문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 기능 사용 가능
>>> name = '홍길동'
>>> age = 30 
>>> f'나의 이름은 {name}입니다. 나이는 {age}입니다.' 
'나의 이름은 홍길동입니다. 나이는 30입니다.'

>>> age = 30 
>>> f'나는 내년이면 {age + 1}살이 된다.'
 '나는 내년이면 31살이 된다.'
  • 딕셔너리에서 사용
>>> d = {'name':'홍길동', 'age':30}
>>> f'나의 이름은 {d["name"]}입니다. 나이는 {d["age"]}입니다.'

  • 정렬
>>> f'{"hi":<10}'  # 왼쪽 정렬
'hi        '
>>> f'{"hi":>10}'  # 오른쪽 정렬
'        hi'
>>> f'{"hi":^10}'  # 가운데 정렬
'    hi    '
  • { } 문자 그대로 표시
>>> f'{{ and }}'
'{ and }'
  • 공백 채우기
>>> f'{"hi":=^10}'  # 가운데 정렬하고 '='로 공백 채우기
'====hi===='
>>> f'{"hi":!<10}'  # 왼쪽 정렬하고 '!'로 공백 채우기
'hi!!!!!!!!'
  • 소수점 표현
>>> y = 3.42134234
>>> f'{y:0.4f}'  # 소수점 4자리까지만 표현
'3.4213'
>>> f'{y:10.4f}'  # 소수점 4자리까지 표현하고 총 자릿수를 '10'으로 맞춤.
'    3.4213'

문자열 관련 함수들

  • 문자열 자료형이 가진 내장 함수
    • 문자 개수 세기: count
    >>> a = "hobby"
    >>> a.count('b')
    2
    
    • 문자열 삽입: join
    >>> a = ","
    >>> a.join('abcd')
    'a,b,c,d'
    
  • 위치 알려 주기.(1).: find
    • 찾는 문자열이 처음 나온 위치 반환
    • 없으면 -1 반환
>>> a = "Python is the best choice"
>>> a.find('b')  # 문자열에서 b가 처음 나온 위치
14
>>> a.find('k')
-1
  • 위치 알려 주기.(2).: index
    • find와 마찬가지로, 찾는 문자열이 처음 나온 위치 반환
      • 단, 찾는 문자열이 없으면 오류 발생
>>> a = "Python is the best choice"
>>> a.index('b')
14
>>> a.index('k')  # k 가 없으므로 오류 발생
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found
  • 소문자를 대문자로 바꾸기: upper
>>> a = "hi"
>>> a.upper()
'HI'
  • 대문자를 소문자로 바꾸기: lower
>>> a = "HI"
>>> a.lower()
'hi'
  • 왼쪽 공백 지우기: lstrip
>>> a = " hi "
>>> a.lstrip()
'hi '
  • 오른쪽 공백 지우기: rstrip
>>> a = " hi "
>>> a.rstrip()
' hi'
  • 양쪽 공백 지우기: strip
>>> a = " hi "
>>> a.strip()
'hi'
  • 문자열 나누기: split
    • 공백 또는 특정 문자열을 구분자로 해서 문자열 분리
    • 분리된 문자열은 리스트로 반환
>>> a = "Life is too short"
>>> a.split()  # 공백을 기준으로 문자열 나눔.
['Life', 'is', 'too', 'short']
>>> b = "a:b:c:d"
>>> b.split(':')  # : 을 기준으로 문자열 나눔.
['a', 'b', 'c', 'd']
  • 문자열 바꾸기: replace
>>> a = "Life is too short"
>>> a.replace("Life", "Your leg")
'Your leg is too short'

불 자료형

  • 참(True)과 거짓(False)을 나타내는 자료형
>>> a = True
>>> b = False
# type( ) 함수를 사용하여 자료형 확인
>>> type(a)
<class 'bool'>
>>> type(b)
<class 'bool'>
  • 조건문의 반환 값으로도 사용된다.
>>> 1 == 1
True
>>> 2 > 1
True
>>> 2 < 1
False

자료형의 참과 거짓

참 또는 거짓
"python"
"" 거짓
[1, 2, 3]
[] 거짓
(1, 2, 3)
() 거짓
{'a': 1}
{} 거짓
1
0 거짓
None 거짓
>>> if []:  # 만약 [ ]가 참이면
...     print("참")  # '참' 문자열 출력
... else:  # 만약 [ ]가 거짓이면
...     printt("거짓")  # '거짓' 문자열 출력
...
거짓

불 연산

  • bool( ) 함수
    • 자료형의 참/거짓을 식별하는 내장 함수
      • 문자열의 참/거짓
        • ‘python’ 문자열은 빈 문자열이 아니므로 bool 연산의 결과로 True 리턴
        >>> bool('python')
        True
        
        • ‘’ 문자열은 빈 문자열이므로 bool 연산의 결과로 False 반환
        >>> bool('')
        False
        
        • 리스트, 숫자의 참/거짓
        >>> bool([1,2,3])
        True
        >>> bool([])
        False
        >>> bool(0)
        False
        >>> bool(3)
        True
        

연산자

산술 연산자

연산기호 설명 사용 예(x=10, y=20, z=3)
+ 더하기 x + y → 30
- 빼기 x - y → -10
* 곱하기 x * y → 200
/ 나누기 y / x → 2.0
% 나머지 y % x → 0
** 제곱 x ** z → 1000
// x // z → 3

관계 연산자

연산기호 설명 사용 예(x=10, y=20)
== 같이 같다 x == y → False
!= 같이 같지 않다 x != y → True
> 왼쪽 값이 오른쪽 값보다 크다 x > y → False
< 왼쪽 값이 오른쪽 값보다 작다 x < y → True
>= 왼쪽 값이 오른쪽 값보다 크거나 동일하다 x >= y → False
<= 왼쪽 값이 오른쪽 값보다 작거나 동일하다 x <= y → True

논리 연산자

연산기호 설명 사용 예(x = True, y = False)
and 논리 AND 연산, 둘 다 참일 때만 참 x and y = False
or 논리 OR 연산, 둘 중 하나만 참 이어도 참 x or y = True
not 논리 NOT 연산, 논리 상태를 반전 not (x and y) = True
  • 논리연산 값
a b a and b a or b
true true true true
true false false true
false true false true
false false false false

대입 연산자

연산기호 설명 사용 예(x=10, y=20)
= 왼쪽 변수에 오른쪽 값을 할당 z = x + y → z = x + y
+= 왼쪽 변수에 오른쪽 값을 더하고 결과를 왼쪽변수에 할당 z += x → z = z + x
-= 왼쪽 변수에서 오른쪽 값을 빼고 결과를 왼쪽변수에 할당 z -= x → z = z - x
*= 왼쪽 변수에 오른쪽 값을 곱하고 결과를 왼쪽변수에 할당 z *= x → z = z * x
/= 왼쪽 변수에서 오른쪽 값을 나누고 결과를 왼쪽변수에 할당 z /= x → z = z / x
%= 왼쪽 변수에서 오른쪽 값을 나눈 나머지의 결과를 왼쪽변수에 할당 z %= x → z = z % x
**= 왼쪽 변수에 오른쪽 값만큼 제곱을 하고 결과를 왼쪽변수에 할당 z **= x → z = z ** x
//= 왼쪽 변수에서 오른쪽 값을 나눈 몫의 결과를 왼쪽변수에 할당 z //= x → z = z // x

멤버 연산자

  • x = 10. y = 20, list = [10, 20, 30, 40, 50]
연산기호 설명 사용 예
in list 내에 포함되어 있으면 참 (x in list) = True
not in list 내에 포함되어 있지 않으면 참 (y not in list) = False

식별 연산자

  • 두 개체의 “메모리 위치”를 비교
  • x = 10, y = 10
연산기호 설명 사용 예
is 개체메모리 위치나 값이 같다면 참 (x is y) = True
is not 개체메모리 위치나 값이 같지 않다면 참 (x is not y) = False

실습

  1. 과목별 점수의 총합과 평균 및 총점과 평균 출력
    • 국어, 영어, 수학 점수의 총합과 평균을 구하고 각 과목의 점수와 총점, 평균을 출력
더보기

Solution

kor_score1 = int(input('국어 점수 입력: '))
eng_score1 = 100
math_score1 = 60

sum = kor_score1+eng_score1+math_score1
avg = sum/3

print('총점: ',sum)
print('평균: ',avg)
  1. 성별이 남성이고 18세 이상의 성인 여부를 판단하는 조건식
    • 성별이 남성이고 18세 이상의 성인 여부를 판단하는 조건식
      • 성별 판별
        • gender = male | femal
      • 나이 판별
        • age = 숫자
더보기

Solution

gender = 'male'
age = 15

check = gender=='male' and age>=18
print('check: ',check)
728x90

'03. Python' 카테고리의 다른 글

04. 흐름 제어  (2) 2024.10.27
03. 시퀀스 자료형  (0) 2024.10.27
01. Python  (7) 2024.10.27