Skip to content

Latest commit

 

History

History
479 lines (306 loc) · 11.3 KB

220711_Python.md

File metadata and controls

479 lines (306 loc) · 11.3 KB

💻Computer란

: Calculation + Remember(컴퓨터는 계산을 하고 기억을 한다. )


💻프로그래밍(programming)이란

: 명령어의 모음(집합)

ex: 엑셀의 sum, avg 등은 관련 명령어를 모아서 만든 작은 프로그램의 일종이다.


💻언어란

: 자신의 생각을 나타내고 전달(명령)하기 위해 사용하는 체계. 문법적으로 맞는 말의 집합


💻지식의 종류에는 크게 두 가지가 있다.

선언적 지식(declarative knowledge) : 사실에 대한 내용

명령적 지식(imperative knowledge) : How-to

컴퓨터에게 명령적 지식을 활용하는 것은 생각보다 힘들다. 명확하게 절차 및 방법을 정의해야 한다.


💻파이썬(Python)이란

  • 별수에 별도의 타입 지정이 필요없다(동적 타이핑 언어라고 불리기도 한다).
    • 변수에 별도의 타입 지정이 필요 없음. 타입을 원할 때마다 바꾸면서 프로그래밍이 가능.

  • 문법 표현이 매우 간결하여 짧은 시간 내에 마스터 가능하다(Very expressive language).

  • 크로스 플랫폼 언어이다.
    • 다양한 운영체제에서 돌아감.

  • 인터프리터 언어(interpreter)이다.
    • 소스코드를 기계어로 변환하는 컴파일 과정 없이 바로 실행 가능하다.
    • 한줄 입력하고 실행한 후, 바로 확인 가능하다.

  • 객체 지향 프로그래밍 언어(OOP: Object Oriented Programming)이다.
    • 모든 것이 객체로 구현되어 있다.
    • 객체(object): 숫자, 문자, 클래스 등 값을 가지고 있는 모든 것

💻코드 스타일 가이드

: 코드를 '어떻게 작성할지'에 대한 가이드라인

  • 그래서 왜 스타일 가이드를 쓰는가: 코드를 일관적으로 작성하기 위해

💻변수란

: 변할 수 있는 수

동일 변수에 다른 객체를 언제든 할당할 수 있기 때문에, 참조하는 객체가 바뀔 수 있기 때문에 '변수'라고 불린다.

  • 할당 연산자(=)를 통해 값을 할당(assign)한다.
  • type(): 변수에 할당된 값의 타입
  • id(): 변수에 할당된 해시 값

✍️실습문제
  • x = 10, y = 20 일 때, 각각 값을 바꿔서 저장하는 코드 작성해보자!
tmp = x
x = y
y = tmp
print(x, y)

✍️Pythonic한 방법
y, x = x, y
print(x, y)

💻식별자: 파이썬 객체(변수, 함수, 모듈, 클래스 등)를 식별하는데 사용되는 이름(name)


⛔변수를 할당할 때 식별자는
  1. 예약어로 하면 안된다.
  2. 숫자로 시작하면 안된다.

💻사용자 입력(input):

name = input('Insert name: ')
#홍길동 입력
print(name) #홍길동 출력됨

💻주석(Comment): 주석으로 처리될 내용 앞에 '#'을 입력


💻불린형(Boolean Type): True/False(1 또는 0만의 값을 갖는다)

  • 비교나 논리 연산을 수행하기 위해 활용된다.
  • 0이 아닌 모든 수는 모두 True이다.

💻None: 값이 없음을 표현하기 위해 존재한다.


💻논리 연산자(Logical Operator): 논리식을 판단하여 참(True)와 거짓(False)를 반환한다.

  • And : 둘 모두가 참이어야 참
연산자 내용
True and True True
True and False False
False and False False

  • Or : 둘 중 하나만 참이어도 참
연산자 내용
True or True True
True or False True
False or False False

  • Not : 참 거짓의 반대의 결과
연산자 내용
not True False
not False True

💻수치형

  • 파이썬의 모든 정수는 int 타입이다. 오버플로우가 발생하지 않는다.

  • 정수가 아닌 모든 실수는 float 타입이다.


💻산술 연산자(Arithmetic Operator)

  • 기본적인 사칙연산 및 수식 계산
연산자 내용
+ 덧셈
- 뺄셈
* 곱셈
% 나머지
/ 나눗셈
//
** 거듭제곱
  • 나머지는 의외로 쓰이는 경우가 굉장히 많은데, 짝수인지 홀수인지, 어떤 수의 배수인지 확인 시 사용된다.

💻복합 연산자(In-place Operator)

  • 연산과 할당이 함께 이뤄짐
연산자 내용
a += b a = a + b
a -= b a = a - b
a *= b a = a * b
a /= b a = a / b
a //= b a = a // b
a %= b a = a % b
a **= b a = a * b

💻비교 연산자(Comparison Operator)

  • 값을 비교하며, True/False 값을 리턴함
연산자 내용
< 미만
<= 이하
> 초과
>= 이상
== 같음
!= 같지 않음
is 객체 아이덴티티(OOP)
is not 객체 아이덴티티가 아닌 경우

💻문자열(String Type)

  • 모든 문자는 str 타입이다.
  • 문자열은 작은 따옴표('')나 큰 따옴표로 표기("")
    • 중첩따옴표(Nested Quotes) = "He said, 'I love programming!' "
    • 삼중따옴표(Triple Quotes) = '''I love programming!\n Especially with python! '''

💻슬라이싱: 문자열에서 원하는 문자만 부분적으로 선택하는 기법

fruit = 'abcdefg'

#인덱스 1이상, 3미만
print(frult[1:3]) # bc

#마지막 문자 출력
print(fruit[-1]) # g

#2이상 5미만 2step 건너뛰기
print(fruit[2:5:2]) # ce

#5이하 2초과 거꾸로 출력
print(fruit[5:2:-1]) # fed

#3미만 모두 출력 
print(fruit[:3]) # abc

#5이상 모두 출력
print(fruit[5:]) # fg

#모든 문자 출력
print(fruit[::]) # abcdefg

#문자 거꾸로 출력
print(fruit[::-1]) # gfedcba (뒤집기)

💻Escape sequence

  • 문자열 내에서 특정 문자나 조작을 위해서 역슬래시() 사용.
print('안녕하세요, \n반갑습니다.')
print('따옴표를 \'씁니다\'')
print('역슬래시를 표기하는 방법은 \\로 표기하면 됩니다.')

✍️f-string을 활용하자!
name = 'Kevin'
print(f'Hello, my name is {name}')

💻파이썬에서의 자료형 변환(Typecasting)

  • 암시적 형 변환(Implicit Typecasting)
    • 3.0과 같은 float를 int로 자동으로 변환해주는 경우이다.

  • 명시적 형 변환(Explicit Typecasting)
    • str(3.5), int('3.5') 처럼 직접 형변환을 해주는 것이다.

💻컨테이너(Container)란

: 여러 문자열, 숫자를 한 번에 저장하기 위한 개념이다. 예시로 list가 있다.


List

student1 = 'Kevin'
student2 = 'Jessica'
student3 = 'Jenny'
student4 = 'Nick'
students = ['Kevin', 'Jessica', 'Jenny', 'Nick'] 
#이와 같이 한 번에 리스트에 담을 수 있다!

print(students[0]) #Kevin
print(students[3]) #Nick

만약에 위의 네 명의 사람을 성별로 나누고 싶을 땐 어떻게 해야할까?

dictionary(사전)을 활용하자!


Dictionary

students = {'Girl': ['Jessica', 'Jenny'],
           'Boy' : ['Kevin', 'Nick']}

'''
이 때 Girl, Boy를 dictionary의 Key라고 하고,
이에 해당하는 list를 Value라고 한다.
dictionary에는 순서가 존재하지 않기 때문에 반드시 Key로만 접근한다.
'''

print(students['Girl']) #['Jessica', 'Jenny']

💻컨테이너의 분류

  • 시퀀스 : 순서가 있는 컨테이너 (인덱스로 접근이 가능하다)

    • 문자열(immutable): 문자들의 나열

    • 리스트(mutable): 변경 가능한 값들의 나열

    • 튜플(immutable): 변경 불가능한 값들의 나열

    • 레인지(immutable): 숫자의 나열


  • 컬렉션/비시퀀스: 순서가 없는 컨테이너

    • 세트(mutable): 유일한 값들의 모음
    • 딕셔너리(mutable): 키-값들의 모음

💻리스트(List)란

  • 변경 가능한 값들의 나열된 자료형
  • 순서를 가지며, 서로 다른 타입의 요소를 가질 수 있다.
  • **변경 가능(mutable)**하고, **반복 가능(iterable)**하다.

리스트 값 추가/삭제

.append: 리스트에 추가하고자 하는 값을 전달 (맨 뒤에 추가 됨)

.pop: 삭제하고자 하는 인덱스를 전달


💻튜플(Tuple)이란

  • 불변한 값들의 나열이다.

  • 순서를 가지며, 서로 다른 타입의 요소를 가질 수 있다.

  • **변경 불가능(immutable)**하고, **반복 가능(iterable)**하다.

  • 소괄호() 혹은 tuple()을 통해 생성한다 a = (1,2,3,4)

  • 값에 대한 접근은 리스트와 동일하게 인덱스로 가능하나, 값 변경이 불가능하며 값 추가, 삭제가 불가능하다(immutable).

ex:

#값 접근
a = (1,2,3,4)
print(a[1]) # 2

#값 변경은 불가능하다.
a[1] = 0 # 불가능

💻레인지(range)란

  • 숫자의 시퀀스를 나타내기 위해 사용한다.

    • 기본형: range(3)(0,1,2)
    • 범위지정: range(1,4)(1,2,3)
    • 범위 및 스텝 지정: range(1,6,2)(1,3,5) => 1이상 6미만 2스텝증가!

    ex:

    numbers = [1,2,3,4]
    for i in range(5):
        print(i) # 1,2,3,4
    
    print(list(numbers)) #[1,2,3,4]
    print(list(range(6,1,-1))) #6,5,4,3,2
    print(list(range(6,1,1))) #[] 불가능하다.

💻세트(set)란

  • 유일한 값들의 모음(collection)이다.
  • 순서가 없고(비시퀀스형) 중복된 값이 없다.
  • **변경 가능(mutable)**하고, **반복 가능(iterable)**하다.

​ ex:

{1,2,3,4,5,5} # {1,2,3,4,5} 중복된 5는 제거된다.

set = {'hi',1,2} # {1,2,'hi'}
  • 값을 추가할 때는 .add 활용한다.
  • 값을 제거할 때는 .remove활용한다.

⛔세트를 활용하면 중복 값을 쉽게 제거할 수 있으나, 순서가 없기 때문에 순서가 중요한 경우에는 사용을 지양해야 한다.
locations = ['서울', '부산', '인천', '광주', '대구', '부산', '인천']
print(set(locations)) # {'광주', '인천', '서울', '대구', '제주', '광주'}
print(len(set(locations))) # 6

💻딕셔너리(dictionary)란

  • 키-값(key-value) 쌍으로 이뤄진 모음(collection)이다.

    • 키(key): 불변 자료형만 가능하다(리스트, 딕셔너리는 불가능하다. 튜플은 가능하다! 근데 보통 쓰는 경우는 드물다)
    • 값(value): 어떠한 형태든 상관 없음

  • **변경 가능(mutable)**하고 **반복 가능(iterable)**하다.


  • 키-값 변경이 가능하다.

    • 딕셔너리에 키와 값의 쌍을 추가할 수 있다.
    • 이미 해당하는 키에 값을 추가할 시 기존 값이 변경된다.
    • 값을 .pop을 하여 삭제가 가능하다.
    students = {'홍길동' : 100, '김철수' : 80}
    students['김영희'] = 90 # {'김영희' : 90} 추가
    students['홍길동'] = 10 # {'홍길동' : 100}을 {'홍길동' : 10}으로 변경
    students.pop('홍길동') #{'홍길동' : 100}을 삭제