본문 바로가기
Python

Python - if문

by DGK 2021. 10. 14.

 

인프런 파이썬 입문 수업을 듣고 중요한 내용을 정리했습니다.
개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

if문

 

  • 기본 개념
# 기본 형식

# if 조건식:
#     code

# if문의 기본구조은 위와 같으며 조건식이 True 값을 가질 때,
# if문의 code가 실행된다.(조건식이 False이면 code 실행X)

# 파이썬에서는 if문의 code 앞에 들여쓰기(indent)를 하지 않으면,
# 에러가 발생한다. 



print(type(True))

# 결과 : <class 'bool'>
# 0이 아닌 수, 문자열, 데이터가 들어있는 리스트, 데이터가 들어있는 튜플,
# 데이터가 들어있는 딕셔너리가 if문의 조건식에 들어가면 True 값을 가진다.

print(type(False))

# 결과 : <class 'bool'>
# 숫자 0, 빈 문자열, 빈 리스트, 빈 튜플, 빈 딕셔너리가 if문의 조건식에 
# 들어가면 False 값을 가진다.




# if문의 예시

if True:
    print("Good")	# print("Good")앞에 들여쓰기를 하지 않으면 에러발생

if False:
    print("bad")

if "a":
    print("Good")   	# code 실행(문자열)

if "":
    print("bad")	# code 실행X(빈 문자열)
  
  
    
    
# if-else문

if False:
    print("bad!")

else:
    print("Good!")

# if-else문의 기본구조는 위와 같으며 if문의 조건식이 True이면
# if문의 code가 실행되고, else문의 code는 실행되지 않는다.

# 반면에 if문의 조건식이 False이면 if문의 code가 실행되지 않고,
# else문의 code가 실행된다.




# if-else문의 예시

city = ""
if city:
    print("You are in:", city)
else:
    print("plz enter your city")

# 결과 : plz enter your city(else문의 code 실행)



city2 = "Seoul"
if city2:
    print("You are in:", city2)
else:
    print("plz enter your city")

# 결과 : You are in: Seoul(if문의 code 실행)

 

 

  • 응용 개념
# 관계 연산자

# >, >=, <, <=, ==, !=

x = 15
y = 10

print(x == y)	# 결과 : False
print(x != y)	# 결과 : True
print(x > y)	# 결과 : True
print(x >= y)	# 결과 : True
print(x < y)	# 결과 : False
print(x <= y)	# 결과 : False




# 논리 연산자(중요)

# and, or, not

a = 75
b = 40
c = 10


print('and:', a > b and b > c)

# 결과 : and: True
# and 연산자는 모든 조건을 만족해야만 True 값이 나오고, 그 외에는 False 값이 된다.
# 즉, 조건 a > b와 b > c를 모두 만족해야만 True 값을 출력한다.



print('or:', a > b or b < c)

# 결과 : or: True
# or 연산자는 조건 중 적어도 1개만 만족하면 True 값이 나오고, 
# 모든 조건이 만족하지 않는 경우에만 False 값이 된다.
# 즉, 조건 a > b와 b > c 중에서 적어도 1개만 만족하면 True 값이 나온다.



print('not:', not a > b)

# 결과 : not: False
# not은 조건의 결과 값과 반대되는 값을 출력한다.
# 즉, 조건 a > b는 True이지만, 조건 앞에 not이 있기 때문에 
# 결과 값은 False가 된다.


print(not True)	   # 결과 : False
print(not False)   # 결과 : True




# 산술, 관계, 논리 연산자 간의 우선순위

# 산술연산자(+,-,*,/ 등)
# 관계연산자(>,=,< 등)
# 논리연산자(and, or, not)

# 연산자 간의 우선순위는 산술 > 관계 > 논리 순이다.
# 즉, 산술연산자가 가장 우위에 있고 그 다음으로 관계, 논리 순서대로 
# 연산을 하여 결과 값이 도출된다.


print('e1 : ', 3 + 12 > 7 + 3)

# 결과 : e1 : True
# 3 + 12와 7 + 3을 먼저 연산한 후에 두 수의 관계를 연산하여 결과 값을 도출한다.



print('e2 : ', 5 + 10 * 3 > 7 + 3 * 20)

# 결과 : e2 :  False
# 위와 동일한 원리



print('e3 : ', 5 + 10 > 3 and 7 + 3 == 10)

# 결과 : e3 :  True 
# 위와 동일한 원리



print('e4 : ', 5 + 10 > 0 and not 7 + 3 == 10)

# 결과 : e4 :  False
# 조건 5 + 10 > 0와 조건 not 7 + 3 == 10이 먼저 연산된 후에,
# 두 결과 값을 토대로 and의 논리연산을 통해 결과 값을 도출한다.

# 즉, 5 + 10 > 0는 True이고, not 7 + 3 == 10는 False이므로
# and의 논리연산 결과는 False가 된다.




# if문의 활용 예시(if, if-else, elif, 다중·중첩 조건문)

score1 = 70
score2 = 'A'

if score1 >= 90 and score2 == 'A':
    print('Pass')
else:
    print('Fail')
    
# 결과 : Fail



id1 = 'vip'
id2 = 'admin'
grade = 'platinum'

if id1 == 'vip' or id2 == 'admin':
    print('관리자 입장')

if id2 == 'admin' and grade == 'platinum':
    print('최상위 관리자')

# 결과 : 관리자 입장, 최상위 관리자



num = 90

if num >= 90:
    print('Grade : A')
elif num >= 80:
    print('Grade : B')
elif num >= 70:
    print('Grade : C')
else:
    print('과락')
    
# 결과 : Grade : A
# 다중 조건문
    
    
    
grade = 'A'
total = 95

if grade == 'A':
    if total >= 90:
        print('장학금 100%')
    elif total >= 80:
        print('장학금 80%')
    else:
        print('장학금 50%')
else:
    print('장학금 없음')
    
# 결과 : 장학금 100%
# 중첩 조건문(단, if문을 지나치게 많이 중첩시키면 코드의 효율성은 하락)

 

 

  • 참고
# in, not in 연산자

# in과 not in 연산자는 리스트, 집합, 딕셔너리, 튜플 등과 같은
# 데이터 컨테이너 안에 특정 데이터가 존재하는지 여부를 알려준다.


q = [10, 20, 30]                                    # 리스트
w = {70, 80 ,90, 100}                               # 집합
e = {"name": "Lee", "city": "Seoul", "grade": "A"}  # 딕셔너리
r = (10, 12, 14)                                    # 튜플



print(15 in q)

# 결과 : False


print(90 in w)

# 결과 : True


print(12 not in r)

# 결과 : False


print("name" in e)

# 결과 : True
# in 연산자 앞에 벨류가 아닌 키를 써야한다.


print("Seoul" in e.values())

# 결과 : True
# 만약, in 연산자 앞에 벨류를 쓰고 싶다면 values( ) 함수를 사용해야 한다.

'Python' 카테고리의 다른 글

Python - while문  (0) 2021.10.14
Python - for문  (0) 2021.10.14
Python - 기초 자료형(집합)  (0) 2021.10.13
Python - 기초 자료형(딕셔너리)  (0) 2021.10.13
Python - 기초 자료형(튜플)  (0) 2021.10.13

댓글