TIL - Python - if&else&elif

김영훈·2021년 2월 17일
0

Python

목록 보기
4/14

# if 조건문

  • if 조건문 사용 시 주의할 부분

    • 값을 비교할 땐 = 대신 ==을 사용하기

      • =: 할당
      • ==: 값 비교
    • 조건문 끝에 : 빠뜨리지 않기

    • 4칸 들여쓰기

  • if 조건문에서 코드 생략하기

    • pass 사용
    x = 5
    if x == 10:
        pass  #  TODO: x가 10일 때 처리가 필요함
  • 기타 참고 사항

    • TODO

      TODO는 "해야 할 일"이라는 뜻으로 보통 주석에 넣는다. 검색으로 쉽게 찾을 수 있다는 장점이 있다. 프로그래머들은 주석에 TODO 이외에도 FIXME, BUG, NOTE등과 같이 코드는 아니지만 일관된 주석을 사용한다.

  • 중첩 if 조건문

    • if x == 15: 조건식은 if x >= 10:이 만족해야만 실행된다.
        x = 15
        if x >= 10:
            print('10 이상입니다.')
    
            if x == 15:
                print('15입니다.')  # 10 이상입니다.
                                   # 15입니다.
            if x == 10:
                print('10입니다.')
  • 기타 헷갈리는 조건문

    True vs False
    False ▶ 1.list, tuple, dict, str, set의 값이 비어있는 경우 2. 0, 0.0, 0j 3. None 4. 클래스 인스턴스의 __ bool (), len __() 메서드가 0 또는 False를 반환할 때
    True ▶ 1. 반대의 경우 2. 0이 아닌 숫자
    **참고

    1. None == False (False) 2. []or()or{} == False (False) 3. 0 == False (True)
    a = []
    b = ['1']

    if a:  #  변수 a가 True인 경우...
        print('@@@')  #  출력x

    if a is b:  #  변수 a와 b가 같은 객체인 경우...
        print('###')  #  출력x

    if not a:  #  변수 a가 False인 경우 "not a"는 True가 되므로 출력
        print('!!!')  #  출력O

# else 조건문

  • ifelse 비교

    • elseif의 조건식이 만족하지 않을 때 코드를 실행

    • if없이 단독 사용 불가

  • ifelse 축약

    • if, else에서 변수에 값을 할당할 때는 변수 = 값 if 조건문 else 값 형식으로 축약이 가능하며, 이런 문법을 조건부 표현식(conditional expression)이라고 부름
    x = 4
    print('!!')  if x == 5 else print('@@')  ##  @@
    
    x = 4 
    y = x  if x == 5 else 0
    print(y)  #  0
    #  참고
    #  ord(): 문자열을 아스키 코드 값을 return
    chars = '!@#$%^&*()_+'
    code3 = [ord(s) for s in chars if ord(s) > 40]  #  [64, 94, 42, 41, 95, 43]
    code4 = list(filter(lambda x: x>40, map(ord, chars)))  #  [64, 94, 42, 41, 95, 43]
  • 연습문제

    표준 입력으로 국어, 영어, 수학, 과학 점수가 입력됩니다. 여기서 네 과목의 평균 점수가 80점 이상일 때 합격이라고 정했습니다. 평균 점수에 따라 '합격', '불합격'을 출력하는 프로그램을 만드세요(input에서 안내 문자열은 출력하지 않아야 합니다). 단, 점수는 0점부터 100점까지만 입력받을 수 있으며 범위를 벗어났다면 '잘못된 점수'를 출력하고 합격, 불합격 여부는 출력하지 않아야 합니다.

  • 정답
    a, b, c, d = map(int, input().split())
    if (0<=a<=100) and (0<=b<=100) and (0<=c<=100) and (0<=d<=100): 
    # 잘못된 풀이 1: if 0<= a, b, c, d <= 100 
    # 잘못된 풀이 2: if 0<= a and b and c and d <= 100
        if (a + b + c + d) / 4 >= 80:
            print('합격')
        else:
            print('불합격')
    else:
        print('잘못된 점수')

# elif

  • elif 특징

    • 의미: else if

    • else처럼 단독 사용이 불가능

    • 여러 번 사용이 가능

    • 반드시 else보다 앞서 나와야 함

    • elif의 조건식이 만족한 경우, 해당 elif코드만 실행되고, 이후의 elif조건식은 검사하지 않는다. (elifif와 달리 앞선 조건식이 만족하지 않았을 경우에만 실행되기 때문)

    • 하지만 for와 while 반복문 내부에서 elif가 사용된 경우와 헷갈려선 안됨!! ▶ 위의 설명은 조건문이 1회 시행되는 경우에 대해 다루고 있음 '반복 시행'과 '1회 시행'을 구분할 것!!

profile
Difference & Repetition

0개의 댓글