카테고리 없음

[네이버 부스트코스]프로그래밍 기초 ft.파이썬 3차시 : 변수와 기초 자료형

닉네임이 멋이 중헌디 2021. 2. 1. 15:41

[학습 목표]

1. 객체(object)와 형태(type)를 이해

2. 변수(variables) 이해 

3. 연산자를 통한 식 이해하고 작성 

4. 기초 자료 구조인 튜플 이해하고 작성 

5. 튜프를 이용한 디지털 사진 변환

 

#1. 객체 

: python 프로그램에서 사용하는 각각의 데이터 

객체의 크기는 아주 작을 수도 있고 매우 클 수도 있다 

 

-형태

: 모든 객체는 형태를 가지고 있다

  형태는 객체를 이용해 할 수 있는 일을 결정한다. 

 

cf. Python 동물원 

    객체 = 동물

    형태 = 동물의 종류 

 

-객체 생성

  1)숫자(integer) : 숫자 그대로 적는다 

    ex. 정수, 실수 가능 

  2)문자열(string): "문자열" 

    ex. "CS101", '1'(숫자 1이 아닌 문자열 1)

  3)논리값(Boolean): True 또는 False

  4)복잡한 객체: 객체를 만드는 함수를 부르는 방법 

    ex. from cs1robots import * 

         Robot() 

  5)튜플(Tuple): 다른 객체들을 포함하는 객체 

     -> 여러 객체들을 쉼표(,)를 사이에 두고 적어서 만들 수 있다. 

    ex. (20101000, "String") -> 종류가 같은, 다른 데이터 여럿으로 생성 가능

 

#2. 형태 

-모든 객체는 형태를 가지고 있다. 

-객체의 형태는 객체가 할 수 있는 일과 객체를 이용해서 할 수 있는 일을 결정합니다. 

   ex. 두 숫자는 더할 수 있지만 두 로봇을 더할 수 없다. 

-객체의 형태 알아보는 방법: type(객체) -> <class '타입'>

   ex. 정수: int, 실수: float, 문자열: str, 복소수: complex, 논리값: bool, 튜플: tuple 

        이외: cs1robots.Robot, cs1media.Picture

 

#3. 변수 

-객체 등에게 주는 이름

-변수에 대입된 객체는 변수의 값

-변수의 값은 바뀔 수 있다

-변수 = 값 [대입문] ex. n = 17, n = "girl", n = None

-None은 '비었다'는 의미의 특별한 객체 : type(n) -> <class 'NoneType'>

cf. python 동물원에서 이름은 동물 우리 앞의 팻말 

 

#4.멤버변수 

객체가 할 수 있는 일은 객체의 형태에 따라 결정. 

객체는 멤버 함수(method)를 통해 이러한 일들을 할 수 있다. 

객체 안에 함수이름이 key, 명령이 value로 있다. 

멤버 함수는 점(.)연산자를 통해 실행할 수 있다.  

=> 객체. 함수이름()

ex. hubo.move()

 

#5.여러 이름을 가진 객체 

하나의 객체는 여러 이름을 가질 수 있다. 

hubo = Robot("yellow")

hubo.move()

ami = hubo 

 

hubo = Robot("blue")

hubo.move()

ami.turn_left()

ami.move()

 

-> hubo 값을 ami에 넣으니까 ami=hubo=노란 로봇 

-> hubo의 파란색으로 값이 변했지만 ami는 따로 안 바꿨으므로 노란색

 

#6.연산자

: +, _, *, /, //, %, ** 

**: 거듭제곱 연산 

ex. 2**5 = 32

%: 나눗셈의 나머지 연산 

ex. 7%3 => 1 

//: 정수 나눗셈(소수 부분을 제외한 나눗셈) 연산 (몫)

 

#7. 식 

: 객체, 변수, 연산자, 함수 호출의 조합 

-연산자는 우선순위에 따라 적용 

1)거듭제곱 : **

2)곱셈, 나눗셈: *, / , //, %

3)덧셈, 뺄셈: +,-

 

-> 순서가 헷갈리면 괄호를 이용해 우선 순위 둘 수 있음 

-> 모든 연산자는 복소수에서도 사용 가능 

-> +, *는 문자열에서도 사용 가능 

ex. "CS101 " * 8 = "CS101 CS101 CS101 CS101 ... CS101 "

 

-논리식

: 계산 결과가 논리값인 식 

-> if, while문에서 사용 

-> 다음 연산자들의 연산 결과: ==, !=, <, >, <=, >= 

-> 답이 True, False로 나온다 

 

-논리 연산자

: not, and, or 

- and 

: 하나라도 false면 false 

-or

: 하나라도 true면 true

=> 그러므로 왼쪽 값으로 연산의 결과가 결정되면 논리 연산자 오른쪽 값을 계산하지 않는다. 

 

#8. 튜플 

: 다른 객체들을 포함하는 객체 

-> tuple 형태를 가진 하나의 객체 

-> 튜플이 포함하는 객체는 풀 수 있다. 

ex. x,y,z = position 

-> 값을 한번에 풀고 다시 묶으려면

ex. a,b = ("aa", "bb")

    a,b = b,a 

     print(b) = aa

 

#9. 튜플로 사진 변환

1)색

 

색은 3개의 값을 가진 튜플로 표현됩니다.

이 튜플이 가진 3개의 값들은 해당 색의 빨간색, 초록색, 파란색 세기/강도를 의미합니다.

 

red = (255, 0, 0)

blue = (0, 0, 255)

white = (255, 255, 255)

black = (0, 0, 0)

yellow = (255, 255, 0)

purple = (128, 0, 128)

 

from cs1media import * img = create_picture(100, 100, purple) img.show() img.set_pixels(yellow) img.show()

 

너비 w 픽셀, 높이 h 픽셀을 가진 디지털 이미지는

h개의 행과 w개의 열을 가진 직사각형 행렬로 표현됩니다.

 

 

이미지의 각 픽셀은 행렬의 x와 y좌표를 이용해서 접근할 수 있습니다.

x좌표의 범위는 0부터 w-1까지, y좌표의 범위는 0부터 h-1까지 입니다.

 

 

 

for 반복문

 

for 반복문은 변수에 정수 값을 대입합니다.

 

 

 

이미지 반전

 

from cs1media import * img = load_picture("../photos/geowi.jpg")

w, h = img.size()  -> 이미지의 크기를 구한다

for y in range(h):

  for x in range(w):

     r, g, b = img.get(x, y)    -> 각 픽셀의 색을 구한다 (get)

     r, g, b = 255 - r, 255 - g, 255 - b  -> 픽셀마다 컬러 반전 

     img.set(x, y, (r, g, b))    

img.show()

  

 

 

이미지 흑백 변환

 

  

=> 임의로 정한 한계를 넘으면 흰색, 안 넘으면 검은색 

 

함수를 이용한 이미지 흑백 변환

 

white = (255, 255, 255)

black = (0, 0, 0)

def blackwhite(img, threshold):

   w, h = img.size()

   for y in range(h):

         for x in range(w):

             v = luma(img.get(x, y))

             if v > threshold:

                   img.set(x, y, white)

            else:

                   img.set(x, y, black)

 

pict = load_picture("../photos/yuna1.jpg")

blackwhite(pict, 100) pict.show()