두번째 시간에는 Python 기본 문법에 대해 알아보았어요.
정리한 걸 포스팅 해볼게요.
변수? 상수? 계수?
4x + 6 = 12 ... 4 : '계수' , x : '변수', 6 : '상수' , 12 : '상수'
- 변수(Variable) : 변하는 수. 즉, 데이터가 변하는 경우 변수를 사용
- 상수(Contant) : 변하지 않는 수. 즉, 프로그래밍 中 어떤 경우에도 변하지 않는 경우 사용
- 계수(Coefficient) : 상수 중 변수와 관련이 있는 것 (* 딥러닝/머신러닝에서 많이 사용)
변수 이름 규칙?
- 대소문자 구분
- 알파벳, 숫자, 언더바(_) 가능
- 변수명 첫 글자에 숫자는 문법 오류!!
- Python 키워드 및 정의된 함수 및 클래스명으로 사용 불가!
a = 1
b1 = 2
B1 = 100
apple_mint = '애플민트'
print('내가 좋아하는 베라 맛은? ' + apple_mint)
print(a + b1)
print('B1 = ', B1)
print('b1 = ', b1)
결과가 이렇게 나오면 잘 나온거죠!! B1과 b1이 다른 것도 알 수 있어요.
그러면 왜 변수를 사용할까?
1. 코드의 재활용성과 가독성
2. 중복 제거를 통한 유지보수 용이
구구단 3단을 출력하는 코드 예로 들어볼게요.
print(3 * 1)
print(3 * 2)
print(3 * 3)
print(3 * 4)
print(3 * 5)
print(3 * 6)
print(3 * 7)
print(3 * 8)
print(3 * 9)
위와 같이 했을 때 4단으로 바꾸려면 앞에 숫자 3을 다 바꿔줘야겠죠? 귀찮 그 잡채
하지만 변수를 쓰면?
n = 3
print(n * 1)
print(n * 2)
print(n * 3)
print(n * 4)
print(n * 5)
print(n * 6)
print(n * 7)
print(n * 8)
print(n * 9)
4단으로 바꾸려면 n = 3 을 n = 4로 바꾸기만 하면 끝나요.
상수 : 변하지 않는 수
상수는 변수명을 대문자로 표현해요. 하지만 변수와 기능적으로 차이는 없어요.
DEFAULT = '42'
print(DEFAULT)
메모리 주소??
: 변수의 값에 대한 컴퓨터의 메모리에 저장된 위치 주소
id(변수명)으로 메모리 주소를 알 수 있어요.
아래 코드를 보면 출력 결과가 같아요.
똑같이 1이 들어가고 메모리 주소도 같아요.
b 가 a의 메모리 주소를 복사한거죠.
a = 1
b = a
print(id(a))
print(id(b))
아래의 코드를 보면 출력 결과가 다른 걸 알 수 있어요.
똑같이 1이라는 값이 있지만 메모리 주소는 다른거죠.
a = 1
b = 1
print(id(a))
print(id(b))
자료형?
프로그래밍 할 때 쓰는 숫자, 문자열 등 자료 형태로 사용하는 모든 것을 뜻해요.
프로그래밍에서 기본이자 핵심 단위!
그렇다면 변수의 타입을 확인하려면?? type(변수명) 을 입력해주면 되요.
구분 | 자료형 | 저장 모델 | 변경 가능성 | 접근방법 |
수치형 | int, float, complex | Literal(단일 종류) | Immutable (변경 불가) |
Direct(직접할당) |
문자열 | str | Container (종류에 무관) |
Sequence (순서중시) |
|
튜플 | tuple | |||
리스트 | list | Mutable (변경 가능) |
||
사전 | dict | Mapping(순서 무관) | ||
집합 | set | Set(중복 불가) |
숫자형 연산?
1. 정수형(Integer)
a = 123
b = -123
c = 0
print('a : ', a , ' b: ', b, ' c: ', c)
print(type(a), type(b), type(c))
2. 실수형(Floating-point)
a = 1.2
b = -3.14
print('a : ', a , ' b: ', b)
print(type(a), type(b))
아래 코딩 방식은 "컴퓨터식 지수 표현 방식"으로 '3.14e3' | '3.14E3' 으로 표현해요
의미는 3.14 * 10 * 10 * 10 (10의 3승)
a = 3.14e3
b = 1.23E3
print('a : ', a)
print('b : ', b)
숫자형은 사칙연산도 가능해요
● + : 더하기
● - : 빼기
● * : 곱하기
● ** : 제곱
● / : 나누기
● // : 몫
● % : 나머지
a, b = 7, 2
print('a + b = ' , a+b)
print('a - b = ' , a-b)
print('a * b = ' , a*b)
print('a ** b = ', a**b)
print('a / b = ' , a/b)
print('a / b의 몫 = ', a//b)
print('a / b의 나머지 = ', a%b)
문자열
생성할 때 작은 따옴표(')나 큰 따옴표(")로 감싸주면되요.
그런데 만약 문자열 안에 작은 따옴표나 큰따옴표를 쓰고 싶다면?
아래 c처럼 작은 따옴표를 쓰고 싶으면 큰따옴표로 감싸고
큰 따옴표를 쓰고 싶다면 작은 따옴표로 감싸면 되요.
하지만! 작은 따옴표 안에 작은 따옴표, 큰 따옴표 안에 큰 따옴표는 불가능해요.
a = 'Hello world'
b = "Have a good day"
c = "I'm a student"
print(a)
print(b)
print(c)
이스케이프 코드
: 프로그래밍할 때 사용할 수 있도록 미리 정의해 둔 "문자 조합" , 주로 출력을 보기 좋게 하기 위해 사용해요
● \n : 줄 바꿈
● \t : 탭 간격
● \\ : 문자 \ 그대로 표현할 때
● \' : 작은 따옴표 그대로 표현할 때
● \" : 큰 따옴표 그대로 표현할 때
a = "Life is too Short \nYou need Python"
b = "Life\tis\ttoo\tShort"
c = "\"Life is too Short\""
d = "I\'m a boy"
print(a)
print(b)
print(c)
print(d)
문자열 연산
● 더하기, 곱하기가 있어요.
a = "Hello"
b = "world"
c = "Hi~"
print(a + b)
print(c * 3)
인덱싱(Indexing) : 무엇인가를 가리킨다는 의미
주의 : 숫자를 셀 때는 0부터! 반대로 셀때는-1부터!
문자 | g | o | o | d | d | a | y | ! | |
인덱스 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
인덱스 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
good day!라는 문자의 인덱스는 위의 표와 같아요.
인덱싱을 표현하는 방법은 변수명[인덱스] 로 하면 되요.
a = "good day!"
print(a[0])
print(a[-1])
슬라이싱(Slicing)
- 변수명[시작인덱싱 번호 : 끝 인덱싱 번호 : 간격] *간격은 생략 가능
a = "Hello World!"
print(a[0] + a[1] + a[2] + a[3] + a[4])
print(a[0:5]) # 0부터 4번째 인덱스가 출력
print(a[:5]) # 시작 인덱싱 번호가 0이면 생략 가능
print('-'*30)
print(a[6:12])
print(a[6:]) # 끝 인덱싱 번호 생략 시 문장 끝까지
문자열 포매팅
문자열 안에 넣고 싶다면?
● 숫자 : %d
● 문자 : %s
● 실수 : %0.숫자f ex)소수점 3째자리까지 표현 : %0.3f
print("오늘 날씨는 %d도 이다" % 35)
print("내가 좋아하는 색깔은 %s이다" % '민트색')
name = '홍길동'
number = 10
print('제 이름은 %s이고 나이는 %d에요' %(name, number))
Format
문과지만 한국어가 부족한 관계로 예시로 알아볼게요.
print("I eat {} apples".format(3))
name = "홍길동"
age = 10
print("제 이름은 {0}이고, 나이는 {1}살이에요.".format(name, age))
print("제 이름은 {n}이고, 나이는 {a}살이에요.".format(n=name, a=age))
문자열 관련 함수들
● count() : 문자 개수
● len() : 문자열 길이
● find() : 인덱싱 위치 * 값이 없으면 -1로 표시
● join() : 문자열 삽입
● split() : 문자열 나누기
● upper() : 대문자로 변경
● lower() : 소문자로 변경
● replace() : 문자열 변경
● strip() : 양쪽 공백 제거
● lstrip() : 왼쪽 공백 제거
● rstrip() : 오른쪽 공백 제거
a = "Hello World"
print(a.count('l')) # 'l' 개수
print(len(a)) # a의 길이
print(a.find('W')) # 'W'의 인덱싱 위치
print(a.find('t')) # 't'는 없기에 -1 출ㄹ력
print(".".join(a)) # .을 삽입
print(a.split(" ")) # " "을 기준으로 나누기
print(a.upper()) # 대문자
print(a.lower()) # 소문자
print(a.replace('World', 'King')) # World를 King으로 변경
b = " hi "
print(b)
print(b.strip()) # 양쪽 공백제거
print(b.rstrip()) # 오른쪽 공백 제거
print(b.lstrip()) # 왼쪽 공백 제거
글이 너무 길어서 2탄으로 돌아올게요!
'Networks > Python' 카테고리의 다른 글
SK networks AI Camp - 오류(Exception)와 예외처리 (6) | 2024.07.14 |
---|---|
SK networks AI Camp - Python을 활용한 구매 기능 (2) | 2024.07.13 |
SK networks AI Camp - Python 기본(3)_제어문 (0) | 2024.07.12 |
SK networks AI Camp - Python 기본(2)_자료구조 (0) | 2024.07.11 |
SK networks AI Camp - Python, Git 등 설치 (0) | 2024.07.09 |