본문 바로가기

Python Basic/혼공파

[혼공파] Chapter 03 조건문


  • 는 개념 정리
  • 는 개인적으로 새롭게 알게 된 점 

3-1. 불 자료형과 if 조건문

불 자료형

  • Boolean [불린, 불리언, 불]: True(참)과 False(거짓) 값만 가질 수 있는 자료형

변수의 범위와 비교해 Bool 값을 확인할 수 있음

  • 여기서 python 이 10<x<30 으로 사용될 수 있다는 것을 처음 알았다. 그런데 if 문과 같은 조건문에서도 and 연산자 없이 저런 형태로 비교 구문이 사용될 수 있는지 궁금하다. 

불 연산자

  • 논리 연산자: not, end, or

if 조건문

if 조건문이란 조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을 때 사용하는 구문. 이는 코드의 실행 흐름을 변경한다는 의미. 

이렇게 조건을 기반으로 실행의 흐름을 변경하는 것을 조건 분기 라고 함. 


날짜를 계산하는 예시 (p.117-120)

짝수/홀수 구분하는 예시 (p.121-123)


3-2. if~else와 elif 구문

if 조건문은 앞 단계 조건문에서 비교했던 것을, 다음 단계에서 하지 않는 것이 가장 효율적임. 

if~else 조건문

  • else 구문: if 조건문 뒤에 사용하며, if 조건문의 조건이 거짓일 때 실행되는 부분. 
  • 조건문이 2가지로만 구분될 때, if else 구문을 사용하는 것이 효율적. => 조건문이 여러개로 연결될 때는 elif 구문 사용. 

elif 구문

  • elif 구문은 if 조건문과 else 구문 사이에 입력. 

False 로 변환되는 값 (3가지; None, 0, 빈 컨테이너)

  • if 조건문의 매개변수에 불이 아닌 다른 값이 올 때는 자동으로 이를 불로 변환해서 처리함. 
  • False로 변환되는 값은 None, 0 (0.0), 빈 컨테이너 (빈 문자열, 빈 바이트열, 빈 리스크, 빈 튜플, 빈 딕셔너리 등)
  • 이 외에는 모두 True로 변환!

pass 키워드

  • 다른 프로그래밍 언어에서는 조건문 내부에 아무 내용을 작성하지 않아도 실행이 정상적으로 됨. 그러나 파이썬에서는 조건문 내부에 내용이 없다면 IndentationError 발생. 
  • 따라서, 파이썬에서는 조건문에 아무 내용을 작성하지 않아도 실행이 정상적으로 작동하게 하기 위해서, pass 구문을 입력함. 

 


21.01.09 추가

1. False로 변환되는 값은 None, 0, 빈 컨테이너.

False로 변환되는 값 (None, 0, 빈 컨테이너)

다른 코드를 짜면서 의문이었던 점. 

의문:

  1. matchobj2가 None 값일 때, if 문을 실행하고 싶음. 
  2. None 은 False 로 변환되기 때문에, if (matchobj2 == None): 으로 사용하지 않고, if matchobj2: 로 해도 될 것이라고 생각함. 
  3. if matchobj2: 로 사용했을 때, 모든 matchobj2에 대해서 if문이 실행됨. => 예상과 다른 결과. 

잘못 생각했던 점

  • matchobj2가 None일 때 코드가 실행되는 것과 (<--이게 내가 원했던 것이고)
  • if문 조건식에 False가 입력되는 것은 아예 다른 문제. (<--이게 내가 입력한 것)
  1. if matchobj2: 로 조건문을 준다면, 
  2. matchobj2가 None이 아닐 때 (즉, 특정 값이 부여되었을 때), 에 True로 인식되어 코드가 실행되고,
  3. matchobj2가 None일 때는, False로 인식되어 코드가 실행되지 않을 것. 

따라서 matchobj2가 None일 때 if 문을 실행하고 싶으면, 

조건식으로 matchobj2 == None을 주는 것이 맞다!