끄적이는 개발노트
260325_Python 실습 정리 본문
728x90
# 데이터를 처리하려면 값이 메모리에 로딩
# 변수는 메모리에 있는 객체를 가리키는 이름(참조)
a = 10 # 대입 연산자
b = a
print(a)
print(b)
# 변수가 가리키는 객체의 주소값을 확인하는 함수가 id
print("주소값 대입", id(a)), print(id(b))
a = 20 # a에 새 값을 대입 → 새로운 객체를 가리킴
print(a)
print(b)
print("주소값 대입", id(a)), print(id(b)) # a와 b가 서로 다른 객체를 참조하여 주소가 서로 상이
# colab은 linux에서 실행되는 인터페이스
!python --version
# 데이터를 해석하려면 데이터 타입이 필요
# Python은 값의 타입을 자동으로 추론하고 객체로 생성
a = 10 # 10은 메모리(heap)에 객체로 생성, a는 객체 참조 저장
# 컴퓨터는 함수 단위로 동작
# 데이터를 메모리에 저장하고 함수가 이를 처리
# 객체지향 프로그래밍: 데이터(멤버변수) + 메소드(함수/method)를 하나로 묶어 class로 표현
# 프로그램의 발전은 프로그래머가 더 쉽게 데이터를 다루도록 함
print(type(a)) # <class 'int'> / 타입 확인
# Python에서는 모든 것이 객체, 변수는 객체를 가리키는 참조(포인터와 유사)
a.bit_length() # 10을 2진수로 표현할 때 필요한 비트 수 반환
problem = input("수식을 입력하시오") # 입력받은 값은 항상 문자열(string)
# 10+20 입력 가정
print(problem)
print(eval(problem)) # 문자열->수식으로 형변환한 후에 계산
print(type(problem)) # 입력값의 데이터 타입 확인 → str
# 함수에 함수를 전달하거나, 값을 반환받는 것도 가능 → 1급 객체 개념과 관련
# 문제 eval로 형변환한 데이터 타입을 확인하시오
print(type(eval(problem)))
# Python의 주요 데이터 타입
# int: 정수 (4바이트 이상 저장 가능)
# float: 부동소수점 실수 (근사치 계산, 정확하지 않을 수 있음)
# long: Python 3에서는 int로 통합
# Decimal: 금융 계산 등 정밀도가 필요한 실수 계산용
# 부동소수점(float) 표현
# 예: 32.123 → 0.32123(가수부) * 10^2(지수부)
# 지수부, 가수부 구조 때문에 무한 루프 계산이나 1을 0.9999999999999999처럼 근사값으로 표현
# 정밀 계산이 필요하면 Decimal 사용
# 문자열 형태의 숫자를 int, float로 변환 가능
print(int("23")) # 23 (문자열 -> 정수)
print(float("23")) # 23.0 (문자열 -> 실수)
# eval(): 문자열 수식을 평가하여 계산
print(eval("23")) # 23
print(eval("23.5")) # 23.5
# eval()는 수식 내 변수 이름도 인식 가능
x = 5
print(eval("23 + (2 * x)")) # 33
x = 5.0
print(eval("23 + (2 * x)")) # 33.0
from decimal import Decimal
price1 = Decimal('100.10')
price2 = Decimal('200.20')
total = price1 + price2
print(total)
# a3: 지수(exponent) 표기법, 4.24 * 10^-3
a3 = 4.24e-3
# a4: 8진수(octal) 표기, 0o로 시작 (0~7 숫자만 가능)
a4 = 0o177
print(a3) # 0.00424
print(a4) # 127
# 출력되는 값은 10진수로 출력
# ** : 거듭제곱 연산자
# 연산 순위: 단항 연산자 > 거듭제곱(**) > 산술 연산(곱, 나눗셈) > 덧셈, 뺄셈
print((1*8**2) + (7*8**1) + (7*8**0)) # 64 + 56 + 7 = 127
# 16진수(hexadecimal) 표기: 0~9, a~f (10~15)
# 예: 10:a, 11:b, 12:c, 13:d, 14:e, 15:f
a5 = 0x8f # 0x로 시작하면 16진수 리터럴
print(a5) # 10진수로 변환되어 출력 → 143
print(type(a5)) # <class 'int'>, Python에서는 int 타입
# 16진수 0x8f 계산 과정:
# 8*16^1 + 15*16^0 = 128 + 15 = 143
15 + 8*16**1
# 문자열 출력(format) 방식
# 1. % 포맷(format): C 언어 스타일
# %s : 문자열(string), %i : 정수(integer) 등
print('My name is %s and I am from %s, %i.' % ('AI', '4차산업혁명', 10))
# 2. str.format() 함수: C# 스타일
# 중괄호 {} 안에 인덱스나 키워드로 값 지정 가능
# 인덱스는 0부터 시작
print('My name is {1} and I am from {0} and I like {thing}'.format('딥러닝','AI', thing='cats'))
# 3. f-string: Python 3.6 이상, 최근 방식
# 문자열 안에 변수나 표현식 직접 삽입 가능
name = "김종호"
age = 20
print(f"이름은 {name} 나이는 {age}")
# 문자열은 기본적으로 1차원 배열과 유사하며, 길이가 가변적임(사이즈가 가변적임)
# Python 문자열 특징:
# - 연속된 메모리 공간에 저장
# - immutable (수정 불가)
# - 인덱스로 접근 가능
# - Python의 모든 변수는 객체 (데이터 + 메서드)
# - 문자열 길이 정보(size)도 객체에 저장
fullName = input("이름을 입력하세요: ") # 문자열(str)로 입력
# 공백도 문자로 취급됨
# 문자열에서 특정 문자의 마지막 위치(index)를 반환
n = fullName.rfind(" ") # reverse find
# 인덱스로 개별 문자 접근 가능
print(fullName[0])
print(fullName[1])
print(fullName[2])
print(n)
# []: 인덱스, 슬라이스, key 접근
# (): 함수 호출, tuple
# {}: dict형 키/값 사용
# 슬라이스 예시
print("이름:", fullName[n+1:]) # n+1부터 끝까지 → 이름 부분
print("성(s):", fullName[:n]) # 처음부터 n 앞까지 → 성 부분 (즉 n은 제외)
print("성(s):", fullName[1:3]) # 1번 인덱스부터 2번 인덱스까지 (뒤는 제외)
# 문자열 생성 방법: '', "", """ """ (여러 줄 문자열 가능, 형태 유지)
multi_line = """건양대
바이오"""
print(multi_line)
# 문자열을 리스트로 변환
t = 'Seoul, Incheon, won'.split(',') # ',' 기준으로 분리하여 리스트 생성
print(t) # ['Seoul', ' Incheon', ' won']
# 리스트를 문자열로 변환
joined = ','.join(t) # 리스트 요소를 ','로 연결
print(joined) # 'Seoul, Incheon, won'
print(type(joined)) # <class 'str'>
# 자료구조: 대량 데이터를 일정한 형식으로 저장
# 주요 목표: 메모리 절약, 검색/처리 속도 향상
# Python 자료구조 기호
# [] : 리스트(list), 동적 배열, 연속적인 메모리 저장, 인덱스로 접근 가능
# () : 튜플(tuple), 리스트와 유사하지만 수정 불가능(immutable), 함수 반환값/매개변수로 자주 사용, 속도 빠름
# {} : dict / set
# dict(dictionary): key: value 형태, 검색 속도가 빠름
# NoSQL: key: value 형태로 데이터를 저장하여 검색 속도 최적화728x90
'Python' 카테고리의 다른 글
| 260330_강의정리 (0) | 2026.03.30 |
|---|---|
| 260326_Python 실습 정리 (0) | 2026.03.27 |
| 260327_강의정리 (0) | 2026.03.27 |
| 260326_강의 정리 (0) | 2026.03.26 |
| 260325_강의 정리 (0) | 2026.03.25 |
