오늘의 배움

Python 기본개념

sily224 2022. 6. 15. 00:23

오늘의 배움

  1. bool(): 입력된 식이나 값을 평가해 불 형의 값(True 또는 False)을 출력해준다.
    1. 식이나 값을 계산해서 결과값이 만들어지는 것을 평가(evaluate)라고 한다.
                  python 언어에서 정수값 0은 False(거짓)로 평가되고, 그 외의 값들은 모두 True(참)로 평가된다.           빈 문자열 "" 나 ''는 False 이고, 나머지 문자열들은 True 로 평가된다.
    2. a = bool(int(input())) 와 같은 형태로 겹쳐 작성하면, 한 번에 한 단계씩 계산/처리/평가된다.
    3. 어떤 불 값이나 변수에 not True, not False, not a 와 같은 계산이 가능하다.
    4. not 예약어(reserved word, keyword): NOT 연산(boolean NOT)이라고도 부르고,
      프라임 '(문자 오른쪽 위에 작은 따옴표), 바(기호 위에 가로 막대), 문자 오른쪽 위에 c(여집합, complement) 등으로 표시한다.
      어떤 불 값이나 변수에 not True, not False, not a 와 같은 계산이 가능하다.
    5. and 예약어는 주어진 두 불 값이 모두 True 일 때에만 True 로 계산하고, 나머지 경우는 False 로 계산한다.
      이러한 논리연산을 AND 연산(boolean AND)이라고도 부르고, · 으로 표시하거나 생략하며, 집합 기호 ∩(교집합, intersection)로 표시하기도 한다. 
    6. or 예약어는 주어진 두 불 값 중에서 하나라도 True 이면 True 로 계산하고, 나머지 경우는 False 로 계산한다.
      이러한 논리연산을 OR 연산(boolean OR)이라고도 부르고, + 로 표시하거나, 집합 기호 ∪(합집합, union)로 표시하기도 한다.
    7. XOR(exclusive or, 배타적 논리합) 연산은 참 거짓이 서로 다를 때에만 True 로 계산하는 논리연산이다.
    8. 참, 거짓의 논리값 인 불(boolean) 값을 다루어주는 예약어는 not, and, or 이 있고,
      불 값들 사이의 논리(not, and, or) 연산 결과도 마찬가지로 True 또는 False 의 불 값으로 계산 된다.

2. ' ~' (비트단위(bitwise)연산자)입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력(~ : tilde, 틸드라고 읽는다.)

** 비트단위(bitwise) 연산자는, ~(bitwise not), &(bitwise and), |(bitwise or), ^(bitwise xor), <<(bitwise left shift), >>(bitwise right shift)가 있다.

 

  1. 예를 들어 1이 입력되었을 때 저장되는 1을 32비트 2진수로 표현하면
            00000000 00000000 00000000 00000001 이고,
    ~1은 11111111 11111111 11111111 11111110 가 되는데 이는 -2를 의미한다.
  2. 예시
    a = 1
    print(~a) #-2가 출력된다.
  3. 비트단위(bitwise)연산자 &: 입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력
    예를 들어 3과 5가 입력되었을 때를 살펴보면
    3       : 00000000 00000000 00000000 00000011
    5       : 00000000 00000000 00000000 00000101
    3 & 5 : 00000000 00000000 00000000 00000001
    이 된다.
    비트단위 and 연산은 두 비트열이 주어졌을 때, 둘 다 1인 부분의 자리만 1로 만들어주는 것과 같다.

    이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서
    마스크연산(특정 부분을 가리고 출력하는)을 수행하는 데에도 효과적으로 사용된다.
  4. 비트단위(bitwise) 연산자 |(or, vertical bar, 버티컬바):  입력된 정수 두 개를 비트단위로 or 연산한 후 그 결과를 정수로 출력한다. ** | 은 파이프(pipe)연산자라고도 불리는 경우가 있다.
    예를 들어 3과 5가 입력되었을 때를 살펴보면
    3      : 00000000 00000000 00000000 00000011
    5      : 00000000 00000000 00000000 00000101
    3 | 5 : 00000000 00000000 00000000 00000111
    이 된다.

    비트단위 or 연산은 둘 중 하나라도 1인 자리를 1로 만들어주는 것과 같다.

    이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서도 효과적으로 사용된다.
  5. 입력된 정수 두 개를 비트단위로 xor 연산한 후 그 결과를 정수로 출력해보자.
    비트단위(bitwise) 연산자 ^(xor, circumflex/caret, 서컴플렉스/카릿)를 사용하면 된다.
    ** 주의 ^은 수학식에서 거듭제곱(power)을 나타내는 기호와 모양은 같지만,
    C언어에서는 전혀 다른 배타적 논리합(xor, 서로 다를 때 1)의 의미를 가진다.

    예를 들어 3과 5가 입력되었을 때를 살펴보면
    3       : 00000000 00000000 00000000 00000011
    5       : 00000000 00000000 00000000 00000101
    3 ^ 5 : 00000000 00000000 00000000 00000110
    이 된다.
    이러한 비트단위 연산은 빠른 계산이 필요한 그래픽처리에서도 효과적으로 사용된다.

    구체적으로 설명하자면,
    두 장의 이미지가 겹쳐졌을 때 색이 서로 다른 부분만 처리할 수 있다.
    배경이 되는 그림과 배경 위에서 움직이는 그림이 있을 때,
    두 그림에서 차이만 골라내 배경 위에서 움직이는 그림의 색으로 바꿔주면
    전체 그림을 구성하는 모든 점들의 색을 다시 계산해 입히지 않고
    보다 효과적으로 그림을 처리할 수 있게 되는 것이다.
    비행기 슈팅게임 등을 상상해보면 된다.

3. 3항 연산

  1. 변수 2개:
    3개의 요소로 이루어지는 3항 연산은
    "x if C else y" 의 형태로 작성이 된다.
    - C : True 또는 False 를 평가할 조건식(conditional expression) 또는 값
    - x : C의 평가 결과가 True 일 때 사용할 값
    - y : C의 평가 결과가 True 가 아닐 때 사용할 값

    조건식 또는 값이 True 이면 x 값이 사용되고, True가 아니면 y 값이 사용되도록 하는 코드이다.
  2. 변수 3개:
    (a if a>b else b) if ((a if a>b else b)>c) else c
    와 같은 계산식은 a, b, c 의 값 중 가장 큰 값으로 계산된다.

4. if 조건식 :
  실행1  #조건식의 평가값이 True 인 경우 실행시킬 명령을 들여쓰기를 이용해 순서대로 작성한다.
  실행2
실행3  #들여쓰기를 하지 않은 부분은 조건식에 상관이 없음 

python 에서는 논리적 실행단위인 코드블록(code block)을 표현하기 위해 들여쓰기를 사용한다.

 

  1. else
    if 조건식 :  #조건식을 평가해서...
      실행1      #True 인 경우 실행시킬 명령들...
      실행2
    else :        
      실행3      #False 인 경우 실행시킬 명령들...
      실행4
    실행5       #조건식과 상관없는 다음 명령
    ...

    else 는 if 없이 혼자 사용되지 않는다.
    또한, else 다음에는 조건식이 없는 이유는? True(참)가 아니면 False(거짓)이기 때문에... 
    조건식의 평가 결과는 True 아니면 False 로 계산되기 때문이다.

    python 에서는 들여쓰기를 기준으로 코드블록을 구분하므로, 들여쓰기를 정확하게 해주어야 한다.
  2. 중첩
    조건/선택 실행구조 안에 다시 조건/선택 실행구조를 "중첩"할 수가 있다.

    또한, 중첩된 조건은
    ...
    if (n<0) and (n%2==0) :
        print('A')
    ...
    와 같이 논리연산자(not, and, or)를 이용해 합쳐 표현할 수도 있다.