프로그램
이란? 명령어들의 집합
핵심: 새 연산을 정의하고 조합해 유용한 작업을 수행하는 것
>> 문제를 해결하는 매우 강력한 방법
프로그래밍 언어 : 컴퓨터에게 작업을 지시하고 문제를 해결하는 도구
방식
인터프리터: 한 행식 실행(대화식) ( 실행 속도가 느림)
컴파일러 : 모든 행을 한번에 실행( 실행 속도가 빠름)
실행속도 : C > JAVA > Python
파이썬이란?
- 간결하고 읽기 쉬운 문법을 가짐
- 다양한 응용 분야
- 데이터 분석, 인공지능, 웹 개발, 자동화 등
- 파이썬 커뮤니티의 지원
- 세계적인 규모의 풍부한 온라인 포럼 및 커뮤니티 생태계
- 파이썬도 객체지향이 가능하다 (Django 에서 라이브러리를 가지고)
- 객체(object)지향 ↔ 절차지향
Python의 장점
- 다이나믹 타입핑 : 값이 들어갈때 타입이 결정되는 것 ex)Python
C, JAVA 는int a;
로 선언하고 써야함. - python은 overflow하지않고 타입이 자동으로 늘어나게됨, 텍스트로도 자동으로 변해서 불편함을 느낄 수도 있음.
값이 들어갈 때 타입이 결정된다
a =1
b = 1.5
print(type(a)) # int
print(type(b)) # float
a = 'kim'
print(type(a)) # str
컴퓨터는 기계어로 소통하기 때문에 사람이 기계어를 직접 작성하기 어려움 ⇒ ‘파이썬 인터프리터’
를 통해서 파이썬과 운영 체제간 대화
파이썬 인터 프리터
: 훨씬 더 사용하기 쉽고 운영체제간 이식도 가능(확장성)
파이썬 인터프리터를 사용하는 2가지 방법
- shell이라는 프로그램으로 한번에 한 명령어 씩 입력해서 실행
- 확장자가 .py인 파일에 작성된 파이썬 프로그램을 실행
표현식 (Expression)
값, 변수 연산자 등을 조합하여 계산되고 결과를 내는 코드 구조
⇒ 표현식이 평가
되어 값이 변환된다.
평가란?
표현식이나 문장을 실행하여 그 결과를 계산하고 값을 결정하는 과정
>> 표현식이나 문장을 순차적으로 평가하여 프로그램의 동작을 결정
문장이란?
실행가능한 동작을 기술하는 코드(조건문,반복문,함수 정의 등)
문장 > 표현식 : 문장은 보통 여러 개의 표현식을 포함함
타입
값이 어떤 종류의 데이터인지, 어떻게 해석되고 처리되어야 하는지를 정의

- Numeric type,
- Set types,
- Sequense types,
- Mapping types,
- Text Sequence,
- 기타(None, Boolean, Functions)
* : 애스터리스크(asteriskos)

-2 ** 4 = -16
(-2) ** 4 = 16
변수
값을 참조하는 이름
값이 담긴 상자
라고 흔히 말하지만, 조금 다르다
degrees = 36.5 : 할당문
“변수 degrees에 값 36.5를 할당
했다”
변수명 규칙
- 영문 알파벳,언더스코어(__), 숫자로 구성
- 숫자로 시작할 수 없음
- 대소문자를 구분
- ‘print’와 같은 것을 이름으로 선언하면, print함수를 사용 못하게 된다.
- 아래 키워드는 파이썬의 내부 예약어로 사용할 수 없음.
파이썬은 30개 (개수가 다를 수 있음)
['False', 'None', 'True', '__peg_parser__', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
각 예약어 설명
변수, 값, 그리고 메모리
거리 = 집주소
메모리 = 메모리 주소
객체란?: 타입을 갖는 메모리 주소 내 값, “값이 들어있는 상자”
변수는 그 변수가 참조하는 객체의 메모리 주소를 가진다.
값형
- 기본자료형 : int, float : 기본적으로
- 참조형 :객체, dict, list : 참조형처럼 처리된다.
할당문
variable = expression
- 할당 연산자(=) 오른쪽에 있는 표현식을
평가
해서 값(메모리 주소)을 생성 - 메모리 주소를 ‘=’ 왼쪽에 있는 변수에 저장
- 존재하지 않는 변수 ⇒ 새 변수를 생성
- 존재하고 있는 변수 ⇒ 기존 변수를 재사용, 변수에 들어있는 메모리 주소를 변경
Style Guide
읽기 좋은 코드 == 좋은 코드
초반에 버릇을 잘 들여야 한다
파이썬 Style Guide
변수명은 직관적이어야 한다
공백(space) 4칸 (tap 한 번)을 사용해서 들여쓰기
한 줄의 길이는 79자로 제한, 길어질 경우 줄 바꿈
문자와 밑줄(_)을 사용하여 함수,변수,속성의 이름을 작성
- snake_case : num_of_student
- CamelCase : numOfStudent
함수 정의나 클래스 정의 등의 블록 사이에는 빈 줄을 추가
ext) https://peps.pytohn.org/pep-0008
Python Tutor
한 줄씩 코드 비교할 때 사용
주석
#
, """ 여러줄 주석"""
으로 함
- 인터프리터에 의해 실행되지 않음 = 사람이 읽기 위함
- 임시로 코드 비활성화
- 문서화를 통해 다른 개발자와의 협업
Data Types
값의 종류와 그 값에 적용 가능한 연산과 동작을 결정하는 속성
왜? 필요한가?
- 값들을 구분하고, 어떻게 다뤄야 하는 지를 알 수 있음
- 각 데이터 타입 값들도 각자에게 적합한 도구를 가진다
- 타입을 명시적으로 지정 ⇒ 코드를 읽는 사람이 변수의 의도를 더 쉽게 이해 ⇒ 잘못된 데이터 타입으로 인한 오류를 미리 예방
Numeric types
- int 정수 자료형
2진수(binary) : 0b
8진수(octal) : 0o
16진수(hexadecimal):0x ,
print(0b10) #2 print(0o30) #24 print(0x10) #16
- float 실수 자료형 , 정수처럼 계산할 수 없다
실수 + 정수 ⇒ 실수
유한 정밀도
컴퓨터 메모리 용량 한정됨 ⇒ 한 숫자에 대해 저장하는 용량 제한
ex) 0.66666666666666666 은 2/3에 가장 가까운 값
⇒ 프로그래밍 언어에서 float는 실수에 대한
근사값
을 말함주의사항
컴퓨터는 2진수, 사람은 10진수 == 10진수의 숫자를 2진수로 ‘반드시’바꿔줘야 됨
0.1(10진수) == 0,0001100110011001100110….(2진수)
⇒ 무한대 숫자를 그대로 저장할 수 없어서 사람이 사용하는 10진법의 근삿값만 표시함
⇒ 0.1에 가깝지만 정확히 동일하지는 않음 ⇒ 예상치 못한 결과 나타남
⇒
Floating point rounding error (부동소수점 오류)
⇒ 실수 연산시 해결책
1. math 모듈 활용
a = 3.2 - 3.1 #0.1000000000000009 b = 1.2 - 1.1 #0.09999999999999987 # 1. 임의의 작은 수 활용 print(abs(1-b) <= 1e=10) #True #abs() : 절대값 # 2. math 모듈 활용 import math print(math.isclose(a,b)) #True
- 지수 표현 방식
e 또는 E 사용한 지수 표현
#314 * 0.01 (314 x 10의 -2승) number = 314e-2 #float print(type(number)) #3.14 print(number)
Sequence Types
여러개의 값들을 순서
대로 나열
하여 저장하는 자료형
ex) str, list, tuple, range
특징
- 순서(Sequence)
값들이 순서대로 저장 (정렬X)
- 인덱싱(indexing)
각 값에 고유한 인덱스(번호)를 가지고 있으며, 인덱스를 사요해 특정 위치의 값을 선택하거나 수정
- 슬라이싱(Slicing)
파이썬에만 있음
인덱스 범위를 조절해 부분적인 값을 추출할 수 있음
- 길이(Length)
len() 함수를 사용하여 저장된 값의 개수(길이)를 구할 수 있음
- 반복(iteration)
반복문을 사용하여 저장된 값들을 반복적으로 처리할 수 있음
my_str = 'hello' print(my_str[1]) #e 인덱싱 print(my_str[2:4]) #ll 슬라이싱 print(len(my_str)) #5 길이
str 문자열
문자들의 순서
가 있는 변경 불가능
한 시퀀스 자료형
- 문자열의 단일 문자나 여러 문자의 조합으로 이루어짐 ⇒ ‘문자’라는 개념이 없음
- ‘ ’ or “ ”로 감싸서 표현
대체로 ‘’or “”로 하나로 쭉 써라(스타일 가이드)
중첩 따옴표
따옴표 안에 따옴표
- 작은 따옴표를 넣을거면 큰 따옴표로 문자열 생성
- 큰 따옴표를 넣을꺼면 작은 따옴표로 문자열 생성
Exccape sequence
역슬래시(backslash)뒤에 특정 문자가 와서 특수한 기능을 하는 문자 조합
일반적인 문법 규칙을 잠시 탈출한다는 의미
- \n : 줄 바꿈
- \t : 탭
- \\ : 백슬래시
- \’ : 작은 따옴표
- \” : 큰 따옴표
print('철수야\'안녕\'') # 철수야 '안녕'
String Interpolation
문자열 내에 변수나 표현식을 삽입하는 방법
f-string
문자열에 f 또는 F 접두어를 붙이고 표현식을 {expression}로 작성하여 문자열에 파이썬 표현식의 값을 삽입할 수 있음
bugs = 'roaches'
counts = 13
area = ;living room'
#Debugging roaches 13 living room 8
print(f'Debugging {bugs} {counts} {area} {3+5}')
인덱스
시퀀스 내의 값들에 대한 고유한 번호로, 각 값의 위치를 식별하는 데 사용되는 숫자 0
부터 시작한다
슬라이싱

[2:4] 이면 이렇게 생각하면 편할 것 같다
시작
인덱스 ~ 끝
인덱스 지정해서 새로운 시퀀스
를 생성
자르는 step도 줄 수 있음
[x:y:z] : x에서 y까지 z의 수를 주기로 잘라버리기
my_str[::-1] : 리버스, 파이썬만의 특별한 slicing, 문자열 뒤집기가 타 언어에 비해 편함
파이썬만 음수 indexing이 가능함
문자열은 불변( 변경 불가)
문자열 인덱스는 접근 가능 but 변경할 순 없음
my_str = 'hello'
my_str[1] # h
my_str[1] = 'z' #TypeError
추가로 배운것
bit : 0 / 1
byte : 영문자 1개, 8bit ,2의8승개
2byte : 한글 1개
KB : 2의 10승 byte
MB , GB, TB, HB
a = 5
b = 2
c = a/b
d = a//b
e = a % b print(c, type(c)) #float
print(d, type(d)) #int
print(e, type(e)) #int
print(2 **10)
CPU
cpu가 프로세서
RAM에 프로그램이 올라와있는 것을 프로세스라고 한다.
DNS : 도메인 네임 서비스, IP와 도메인 이름을 mapping 해놓은 것
이더넷 : Ethernet, 인터넷 설정
물리적 주소 : 바꿀수 없음
ip 주소 : 바꿀 수 있음
찾아봐야되는것
- 16진수 2개가 1바이트?
https://dean30.tistory.com/40
==16진수 1자리 = 2진수 4자리==
1 byte = - ipconfig의 내용 파악하기 (네트워크 공부)
- 10진수 소수형 데이터를 2진수로 바꾸기
https://woo-dev.tistory.com/93
68.625 -> 1000100.101- 정수부(68)은 그대로 이진수로 변환
=> 100 0100 - 소수부(0.625)만 가져오고
2를 곱해서
그 결과가1로 떨어질 때까지
또는똑같은 소수점이 나올 때까지
반복한다.
0.625 x 2 = 1.250(정수부는 버림)
0.250 x 2 = 0.500
0.500 x 2 = 1.000 - 위에서 부터 차례로 가져온다 => 101
- 정수부와 소수부를 합친다. => 1000100.101
- 정수부(68)은 그대로 이진수로 변환
'TIl' 카테고리의 다른 글
함수, 재귀 함수, Packing (0) | 2024.01.17 |
---|---|
01.16 Collection, 형변환, 연산자 (0) | 2024.01.16 |
1월 14(토) (0) | 2024.01.13 |
파이썬 1일차(스캠) (0) | 2024.01.13 |
파이썬 2일차(스캠) (2) | 2024.01.13 |