티스토리 뷰
[1] 변수(Variable)
- 데이터(값)을 저장하기 위한 메모리 공간의 프로그래밍상 이름
- 변수는 메모리 주소를 가지고 있고, 값은 메모리 주소에 할당됨
- 선언 되는 순간 메모리 특정 영역에 물리적인 공간이 할당됨
- 예) a=8 ; a라는 이름을 가진 메모리 주소에 8을 저장하라
(1) 폰 노이만 아키텍처
- 사용자가 컴퓨터에 값을 입력하거나 프로그램을 실행할 경우 그 정보를 먼저 메모리에 저장시키고, CPU가 순차적으로 그 정보를 해석하고 계산하여 사용자에게 결과값을 전달
(2) 변수 이름 규칙
- 알파벳, 숫자, 언더스코어(_)로 선언 가능
- 변수명은 의미 있는 단어로 표기하는 것이 좋다
- 변수명은 대소문자가 구분된다
- 특별한 의미가 있는 예약어는 쓰지 않는다(예. for, if, else 등)
[2] Basic Operation (간단한 연산)
- 간단한 사칙연산과 문자열 처리 등의 기초적인 연산
(1) 기본 자료형 (Primitive data type)
- data type : 파이썬이 처리할 수 있는 데이터 유형
- Dynamic Typing : 코드 실행시점에 데이터의 Type을 결정하는 방법(인터프리터가 알아서 해줌)
유형 | 설명 | 예시 | 선언형태 | ||
수치자료형 | 정수형 | Integer | 양/음의 정수 | 1,-9 | data = 1 |
실수형 | float | 소수점이 포함된 실수 | 10.2,-9.3,0 | data = 9.0 | |
문자형 | string | 따옴표('/")애들어가 있는 문자형 | abc, a20abc | data = 'abc' | |
논리/불린 자료형 | boolean | 참 또는 거짓 | True, False | data = True |
* 데이터의 유형에 따라 공간의 크기가 달라짐
(2) 연산자(+,-,*,/,%,**)와 피연산자(숫자)
- 문자열+문자열도 가능 a+b = ab
- 문자열+숫자열은 안됨
- 증가연산(+=, -=), 파이썬은 ++안됨
연산자 | 반환 | 예시 |
// | 몫 | print(7/5) # 1.4 print(7//5) # 1 print(7%5) # 2 print(divmod(7,5)) # (1,2) 튜플형식 |
% | 나머지 | |
divmod() | (몫, 나머지) |
(3) 데이터 형변환
- float(), int()*정수형으로 변환시 소수점 이하는 버림
예) int(10.7)의 값은 10
* 참고 : 컴퓨터에서 이진수를 쓰는 이유?
컴퓨터는 실리콘이라는 재료로 만든 반도체로 구성됨. 반도체는 특정 자극을 줬을 때 전기를 통할 수 있게 하는 물질
도체와 부도체에 반해 반도체는 전류의 흐름의 제어가 가능
전류가 흐를때1, 흐르지 않을때 0으로만 숫자를 표현할 수 있음
- 이진수 한자리를 bit라 칭하고 8개의 bit는 1byte
[3] list 또는 Array
- 시퀀스 자료형(여러 데이터들의 집합)
- int, float 같은 데이터 타입 포함
(1) 인덱싱 indexing: list[i]
- list에 있는 값들은 주소(offset, [0],[1],,,,)를 가짐 → 주소를 사용해 할당된 값을 호출
- len(list) 리스트의 길이 반환
(2) 슬라이싱 slicing : list[시작:끝:step]
- list의 값들을 잘라서 쓰는 것
- list의 주소 값을 기반으로 부분 값을 반환
예. arr[1:9:3]
(3) 리스트 연산 : 합집합
예. arr1= ['a','b','c'], arr2=['d','e','f'] 일떄 a+b → [ 'a','b','c','d','e','f' ]
* 특정 값 확인 'a' in arr1 → True
(4) 추가 삭제
- list.append() :리스트에 새로운 값 추가, 리스트 변경
- list.extend() : 새로운 리스트 반환, 원래 리스트에 변화 X
- list.insert(인덱스번호, 추가할값) : n번째 주소에 x추가
- list.remove() : 리스트에 해당 값 삭제, 리스트 변경
- del list[인덱스번호] : 해당 인덱스의 값 삭제
(5) 메모리 저장 방식
- 파이썬 리스트만의 특징: 다양한 Daya Type이 하나의 list에 들어감(메모리 주소를 참조)
- a= [1,2,3,4,5], b= [4,5,6,7,8] 일때, b는 a의 주소값을 가리킴
- a의 주소값이 아닌 값을 복사 하고 싶을 경우 b=a[:]
(6) 패킹와 언패킹
- 패킹 : 한 변수에 여러 개의 데이터를 넣는 것
t = [1,2,3]
- 언패킹 : 한 변수의 데이터를 각각의 변수로 반환
a,b,c = t → a=1,b =2,c=3
(7) 이차원 리스트
- 리스트 안에 리스트를 만들어서 행렬(Matrix) 생성
- 이차원 리스트를 복사하는 방법?
import copy
copy.deepcopy(복사하고 싶은 이차원 배열)
[4] 함수와 콘솔 Function and Console I/O
(1) 함수
- 어떤 일을 수행하는 코드의 덩어리, 반복적인 수행을 1회만 작성 후 호출, 코드를 논리적인 단위로 분리
* 캡슐화 : 인터페이스만 알면 타인의 코드 사용
def 함수명(파라미터 들):
수행문
return 반환값
- 실행순서 : def 부분을 메모리에 올려놓음(상단에 적는게 좋음) → 메인 프로그램 수행 → 함수 호출 → 함수 수행 → 메인 프로그램 수행
① 파라미터 : 함수의 입력 값 인터페이스 ex. f(x)의 x
② argument : 실제 Parameter에 대입된 값 ex.f(2) 의 2
* parameter 유무, 반환 값(return value) 유무에 따라 함수의 형태가 다름
예. def f(x) :
print(x+10)
c = f(10)
print(c) # None → f(x)에 반환값이 지정되어있지 않기 때문!
* list.sorted()는 return 값이 있어서 원래 리스트는 변경X, list.sort()는 기존 리스트 변경
※ 출처 : 네이버 부스트코스 - 인공지능 기초 다지기
(2) 콘솔 in/out
- 어떻게 프로그램과 데이터를 주고 받을 것인가?
① input("입력받을때 질문하고 싶으면 여기씀") : 콘솔창에서 문자열을 입력 받아 반환하는 함수
=> *숫자도 string으로 들어옴
② print() : 출력
* 출력형식
구분 | 사용법 | 예시 |
%-format | '%data type' % variable | print("I eat %d apples" % 3) → I eat 3 apples print('%d%d' % (1,2)) →12 |
format함수 * type을 지정해주지 않아도 되서 편리 |
'{}'.format( variable ) | print('I eat {} apples'.format(3)) → I eat 3 apples print('{1}{0}'.format('a','b')) →ba |
fstring * 왼쪽 정렬이 기본 |
f"내용{ variable }" | name="Ho" print(f"Hello {name}") → Hello Ho |
* %-format 종류
type | 설명 | 예시 |
%s | 문자열 string | print("%5.1f" % 1.54) → " 1.5" 공백, 점 포함 5칸. 반올림 print("%5.1f" % 1.55) → " 1.6" 공백, 점 포함 5칸. 반올림 print("%5.1f" % 1.56) → " 1.6" 공백, 점 포함 5칸. 반올림 ① Padding :여유 공간을 지정하여 글자배열+소수점자릿수 맞추는 것 print("상품 : {0}, 가격 {1}".format("사과", 5.243)) → 상품 : 사과, 가격 5.243 print("상품 : {0:10s}, 가격 {1:10.1f}".format("사과", 5.243)) → 상품 : 사과 , 가격 5.2 print("상품 : {0:>10s}, 가격 {1:<10.1f}".format("사과", 5.243)) >는 오른쪽 정렬, <는 왼쪽정렬 → 상품 : 사과, 가격 5.2 ② naming: 해당 표시할 내용을 변수로 표시하여 입력 print("상품 : %(name)10s, 가격 %(price)10.5f" % { "name" : "사과", "price" : 5.243}) print("상품 : {name:>10s}, 가격 {price:10.5f}".format(name = "사과", price = 5.243)) → 상품 : 사과, 가격 5.24300 name="Ho" print(f"Hello {name:20}") → Hello Ho (왼쪽 정렬이 기본) print(f"Hello {name:>20}") → Hello Ho (오른쪽 정렬) print(f"Hello {name:*<20}") → Hello Ho****************** (빈칸은*로) print(f"Hello {name:*>20}") → Hello ******************Ho print(f"Hello {name:^20}") → Hello Ho (가운데 정렬) |
%c | 문자 1개 character | |
%d | 정수 integer | |
%f | 부동소수 floating-point | |
%o | 8진수 | |
%x | 16진수 | |
%% | literal % (문자 % 자체) |
※ 출처 : 네이버 부스트코스 - 인공지능 기초 다지기(https://www.boostcourse.org/ai100)
'AI > Python' 카테고리의 다른 글
[프로그래머스 기초] Day 12,13,14,15 문자열, 리스트 (0) | 2024.06.05 |
---|---|
[프로그래머스 기초] Day8,9,10,11,12 이차원 배열, 리스트, 예외처리,반복문 (2) | 2024.06.03 |
[Python] 컴퓨터와 파이썬의 특징 (0) | 2024.06.01 |
[프로그래머스 기초] Day7 - 문자열, 리스트, set (0) | 2024.06.01 |
[프로그래머스 기초] Day5,6 - 리스트, 튜플, 딕셔너리 (0) | 2024.05.31 |
- Total
- Today
- Yesterday
- 미라클모닝
- 빅데이터 분석기사
- 티스토리챌린지
- 스크랩
- 줄넘기
- Ai
- IH
- 루틴
- 경제
- 실기
- SQL
- 고득점 Kit
- 아침운동
- 영어회화
- 오블완
- Python
- ChatGPT
- 다이어트
- 습관
- 아침
- 오픽
- 프로그래머스
- llm
- opic
- C언어
- 뉴스
- 갓생
- 운동
- 30분
- 기초
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |