프로그래밍 언어/파이썬

파이썬 18. if문-2

닉네임못짓는사람 2020. 10. 27. 04:25
반응형

이번 글에서는 if문에 대해서 이어서 알아보도록 하겠습니다.

 

일단 간단한 if문을 사용해보고 이전 내용을 복습해봅시다.

number = int(input("숫자를 입력하세요. : "))
if number >= 51:
    print("number > 50")
else:
    print("number <= 50")

위와 같이 if문을 사용해서 특정한 조건을 기준으로 프로그램의 동작을 제어할 수 있습니다.

그런데 만약 조건에 따라 프로그램의 동작을 세 가지, 또는 그 이상의 방향으로 제어하고 싶다면 어떻게 할까요?

이런 때에는 elif라는 문법을 사용하는데, 일단 코드로 확인해봅시다.

elif문


grade = int(input("점수를 입력하세요.: "))
if grade >= 90:
    print("학점 : A")
elif grade >= 80:
    print("학점 : B")
elif grade >= 70:
    print("학점 : C")
elif grade >= 60:
    print("학점 : D")
else:
    print("학점 : F")

elif문을 사용하면 이렇게 여러 가지의 조건을 하나의 if문 내에서 검사할 수 있습니다.

여기서 주의해야 할 elif문의 동작 방식을 알려드리겠습니다.

 

먼저, 조건문을 검사할 때 가장 위에 있는 if문부터 순서대로 조건들을 검사합니다.

이때 조건에 맞는 조건식이 존재할 경우 해당 if, elif문의 실행코드를 실행시키고 if문을 빠져나갑니다.

즉 그 후에 있는 조건들은 검사하지도 않는다는 뜻입니다.

 

예를 들어 위의 예제에서 grade는 83점이었습니다.

그렇다면 if문에 들어가서 먼저 grade가 90이상인지 검사합니다.

이때 조건이 True라면 학점 : A를 출력하고 if문을 종료합니다.

 

하지만 실제 결과는 False이기 때문에 해당 조건식은 건너뛰고, 다음으로 grade가 80이상인지 검사합니다.

그러면 이제 grade >= 80이라는 조건을 만족하기 때문에 해당 elif문에 있는 실행코드를 실행시킵니다.

화면에 학점 : B를 출력시킨 뒤 이후에 있는 조건은 검사도 하지 않습니다.

 

또한 모든 조건을 만족하지 못하면, 동일하게 else문에 있는 실행코드를 실행시킵니다.

이 코드를 변경해서 if문의 활용법을 좀 더 알아보도록 합시다.

 

중첩 if문


지금까지 리스트, 딕셔너리 등의 자료형을 공부할 때 리스트 안의 리스트, 딕셔너리 안의 딕셔너리 등을 많이 보셨을 겁니다.

이런 것처럼 if문 또한 if문 안의 if문 즉, 중첩 if문을 사용할 수 있습니다.

사용법은 별로 어렵지 않으니 코드로 바로 확인해봅시다.

grade = int(input("점수를 입력하세요.: "))
if grade >= 90:
    if(grade >= 95):
        print("학점 : A+")
    else:
        print("학점 : A")
elif grade >= 80:
    if (grade >= 85):
        print("학점 : B+")
    else:
        print("학점 : B")
elif grade >= 70:
    if (grade >= 75):
        print("학점 : C+")
    else:
        print("학점 : C")
elif grade >= 60:
    if (grade >= 65):
        print("학점 : D+")
    else:
        print("학점 : D")
else:
    print("학점 : F")

이렇게 if문을 중첩해서 사용할 경우 먼저 바깥쪽의 조건을 검사한 뒤, 안에서 다시 if문으로 조건을 검사합니다.

위의 코드에서 grade를 97점을 입력했는데, 이러면 먼저 바깥쪽의 grade >= 90이라는 조건을 만족해서 코드를 실행하고,

이후 다시 grade >= 95라는 조건을 만족해서 print("학점 : A+")라는 텍스트를 출력하는 것입니다.

 

다음에는 조건식을 정하는 방법에 대해 좀 더 알아보도록 합시다.

논리 연산자 AND, OR, NOT


조건문의 조건식에는 AND, OR, NOT 세 가지 논리 연산을 사용할 수 있습니다.

AND연산은 두 논리 값이 모두 True이면 True를, 이외에는 False를 반환합니다. 예약어는 and

OR연산은 두 논리값 중 하나만 True이면 True를 반환하며, 둘 다 False일 경우 False를 반환합니다. 예약어는 or

NOT연산은 논리 값을 뒤집는 연산자로서, True를 False로, False를 True로 바꿔줍니다. 예약어는 noㅅ

 

이 논리 연산자를 사용해서 새로운 코드를 작성해봅시다.

number = int(input("숫자를 입력하세요.: "))
if number >= 50 and (number%2) == 1:
    print("number : 50이상이면서 홀수")
elif number <= 50 or (number%2) == 1:
    print("number : 50이하이거나 홀수")
elif not (number%2 == 1):
    print("number : 홀수가 아닌 수(짝수)")
else:
    print("그외")

이렇게 논리연산자를 사용해서 하나의 조건식을 좀 더 세밀하게 조정할 수 있습니다.

또한 참고로 and연산의 경우 중첩if문을 사용해서 number가 >= 50인지 검사하고,

다시 number가 홀수인지 검사하여 결과를 구해내는 것과 동일한 동작을 수행합니다.

in, not in


이번에는 in, not in에 대해서 알아보도록 하겠습니다.

in, not in은 주로 리스트, 튜플, 문자열 등과 함께 사용합니다.

in의 경우 해당 변수에 값이 있는지, not in은 값이 없는지 검사합니다.

list1 = [1, 2, 3]
if 3 in list1:
    print("list1에 3이 있습니다.")
if 5 not in list1:
    print("list1에 5가 없습니다.")

위의 코드는 list1에 3과 5가 있는지 검사하는 코드입니다.

중요한 점은 in의 경우 list1에 3이 있을 때는 True, 없을 때는 False이며

not in의 경우 list1에 5가 없을 때 True, 있을 때 False라는 점입니다.


이번 글은 이 정도로 마치도록 하겠습니다.

감사합니다.

 

 

반응형

'프로그래밍 언어 > 파이썬' 카테고리의 다른 글

파이썬 20. 반복문-while문  (0) 2020.11.02
파이썬 19. 반복문-for문  (0) 2020.10.29
파이썬 17. if문-1  (0) 2020.10.08
파이썬 16. set관련 함수  (0) 2020.10.07
파이썬 15. set(집합)  (0) 2020.10.06