본문 바로가기

TIl

0115 파이썬 1

프로그램이란? 명령어들의 집합

핵심: 새 연산을 정의하고 조합해 유용한 작업을 수행하는 것

>> 문제를 해결하는 매우 강력한 방법

프로그래밍 언어 : 컴퓨터에게 작업을 지시하고 문제를 해결하는 도구

방식

인터프리터: 한 행식 실행(대화식) ( 실행 속도가 느림)

컴파일러 : 모든 행을 한번에 실행( 실행 속도가 빠름)

실행속도 : C > JAVA > Python

파이썬이란?
  1. 간결하고 읽기 쉬운 문법을 가짐
  2. 다양한 응용 분야
  • 데이터 분석, 인공지능, 웹 개발, 자동화 등
  1. 파이썬 커뮤니티의 지원
  • 세계적인 규모의 풍부한 온라인 포럼 및 커뮤니티 생태계
  • 파이썬도 객체지향이 가능하다 (Django 에서 라이브러리를 가지고)
  • 객체(object)지향 ↔ 절차지향

Python의 장점

  1. 다이나믹 타입핑 : 값이 들어갈때 타입이 결정되는 것 ex)Python
    C, JAVA 는 int a; 로 선언하고 써야함.
  2. python은 overflow하지않고 타입이 자동으로 늘어나게됨, 텍스트로도 자동으로 변해서 불편함을 느낄 수도 있음.
    값이 들어갈 때 타입이 결정된다
a =1

b = 1.5
print(type(a)) # int

print(type(b)) # float

a = 'kim'
print(type(a)) # str

컴퓨터는 기계어로 소통하기 때문에 사람이 기계어를 직접 작성하기 어려움 ⇒ ‘파이썬 인터프리터’를 통해서 파이썬과 운영 체제간 대화

파이썬 인터 프리터 : 훨씬 더 사용하기 쉽고 운영체제간 이식도 가능(확장성)

파이썬 인터프리터를 사용하는 2가지 방법
  1. shell이라는 프로그램으로 한번에 한 명령어 씩 입력해서 실행
  2. 확장자가 .py인 파일에 작성된 파이썬 프로그램을 실행

표현식 (Expression)

값, 변수 연산자 등을 조합하여 계산되고 결과를 내는 코드 구조

⇒ 표현식이 평가되어 값이 변환된다.

평가란?

표현식이나 문장을 실행하여 그 결과를 계산하고 값을 결정하는 과정

>> 표현식이나 문장을 순차적으로 평가하여 프로그램의 동작을 결정

문장이란?

실행가능한 동작을 기술하는 코드(조건문,반복문,함수 정의 등)

문장 > 표현식 : 문장은 보통 여러 개의 표현식을 포함함

타입

값이 어떤 종류의 데이터인지, 어떻게 해석되고 처리되어야 하는지를 정의

  1. Numeric type,
  2. Set types,
  3. Sequense types,
  4. Mapping types,
  5. Text Sequence,
  6. 기타(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

  1. 할당 연산자(=) 오른쪽에 있는 표현식을 평가해서 값(메모리 주소)을 생성
  2. 메모리 주소를 ‘=’ 왼쪽에 있는 변수에 저장
  • 존재하지 않는 변수 ⇒ 새 변수를 생성
  • 존재하고 있는 변수 ⇒ 기존 변수를 재사용, 변수에 들어있는 메모리 주소를 변경

Style Guide

읽기 좋은 코드 == 좋은 코드

초반에 버릇을 잘 들여야 한다
파이썬 Style Guide

변수명은 직관적이어야 한다

공백(space) 4칸 (tap 한 번)을 사용해서 들여쓰기

한 줄의 길이는 79자로 제한, 길어질 경우 줄 바꿈

문자와 밑줄(_)을 사용하여 함수,변수,속성의 이름을 작성

  • snake_case : num_of_student
  • CamelCase : numOfStudent

함수 정의나 클래스 정의 등의 블록 사이에는 빈 줄을 추가

ext) https://peps.pytohn.org/pep-0008

Python Tutor

한 줄씩 코드 비교할 때 사용

주석

# , """ 여러줄 주석""" 으로 함

  1. 인터프리터에 의해 실행되지 않음 = 사람이 읽기 위함
  2. 임시로 코드 비활성화
  3. 문서화를 통해 다른 개발자와의 협업

Data Types

값의 종류와 그 값에 적용 가능한 연산과 동작을 결정하는 속성

왜? 필요한가?

  • 값들을 구분하고, 어떻게 다뤄야 하는 지를 알 수 있음
  • 각 데이터 타입 값들도 각자에게 적합한 도구를 가진다
  • 타입을 명시적으로 지정 ⇒ 코드를 읽는 사람이 변수의 의도를 더 쉽게 이해 ⇒ 잘못된 데이터 타입으로 인한 오류를 미리 예방

Numeric types

  1. int 정수 자료형

    2진수(binary) : 0b

    8진수(octal) : 0o

    16진수(hexadecimal):0x ,

    print(0b10) #2
    print(0o30) #24
    print(0x10) #16
  2. 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
    1. 지수 표현 방식

    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

특징
  1. 순서(Sequence)

    값들이 순서대로 저장 (정렬X)

  2. 인덱싱(indexing)

    각 값에 고유한 인덱스(번호)를 가지고 있으며, 인덱스를 사요해 특정 위치의 값을 선택하거나 수정

  3. 슬라이싱(Slicing) 파이썬에만 있음

    인덱스 범위를 조절해 부분적인 값을 추출할 수 있음

  4. 길이(Length)

    len() 함수를 사용하여 저장된 값의 개수(길이)를 구할 수 있음

  5. 반복(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 주소 : 바꿀 수 있음

찾아봐야되는것

  1. 16진수 2개가 1바이트?
    https://dean30.tistory.com/40
    ==16진수 1자리 = 2진수 4자리==
    1 byte =
  2. ipconfig의 내용 파악하기 (네트워크 공부)
  3. 10진수 소수형 데이터를 2진수로 바꾸기
    https://woo-dev.tistory.com/93
    68.625 -> 1000100.101
    1. 정수부(68)은 그대로 이진수로 변환
      => 100 0100
    2. 소수부(0.625)만 가져오고 2를 곱해서 그 결과가 1로 떨어질 때까지 또는 똑같은 소수점이 나올 때까지 반복한다.
      0.625 x 2 = 1.250(정수부는 버림)
      0.250 x 2 = 0.500
      0.500 x 2 = 1.000
    3. 위에서 부터 차례로 가져온다 => 101
    4. 정수부와 소수부를 합친다. => 1000100.101

'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