[Python] if문

Jeongyun Heo·2021년 1월 6일
0

Python

목록 보기
18/36
post-thumbnail

파이썬 코딩 도장
https://dojang.io/mod/page/view.php?id=2229

이번에는 조건식이 아닌 값으로 if와 else의 코드를 동작시켜보자.

if True:            # True는 참
    print('참')
else:
    print('거짓')

if False:           # False는 거짓
    print('참')
else:
    print('거짓')

if None:            # None은 거짓
    print('참')
else:
    print('거짓')
    
👉
참
거짓
거짓

True 참
False 거짓
None 거짓

if 조건문에 숫자 지정하기

숫자는 정수(2진수, 10진수, 16진수), 실수와 관계없이 0이면 거짓, 0이 아닌 수는 참이다.

if 0:            
    print('참')
else:
    print('거짓')

if 1:           
    print('참')
else:
    print('거짓')

if 0x1F:            
    print('참')
else:
    print('거짓')

if 0b1000:            
    print('참')
else:
    print('거짓')

if 13.5:            
    print('참')
else:
    print('거짓')
    
👉
거짓
참
참
참
참

0만 거짓이다.

조건문에 문자열 지정하기

문자열은 내용이 있을 때 참, 비어 있으면 거짓이다.

if 'Hello':         # 문자열은 참   
    print('참')
else:
    print('거짓')

if '':              # 빈 문자열은 거짓
    print('참')
else:
    print('거짓')

즉, 값 자체가 있으면 if는 동작한다.
반대로 0, None, ''(빈 문자열) 은 False로 취급하므로 else가 동작한다.

0, None, 빈 문자열을 not으로 뒤집으면?

0, None, ''(빈 문자열)not으로 뒤집으면 참(True)이 된다.
not False 👉 True

if not 0:          # not 0은 참        
    print('참')

if not None:       # not None은 참     
    print('참')

if not '':         # not 빈 문자열은 참  
    print('참')
    
👉
참
참
참

부등호(비교연산자) 연달아 사용하기

보통 여러 조건을 판단할 때 if를 계속 나열해서 중첩 if 조건문으로 만드는 경우가 많다.

if x > 0:
    if x < 20:
        print('20보다 작은 양수입니다.')

중첩 if 조건문은 and 논리 연산자를 사용해서 if 하나로 줄일 수 있다.

if x > 0 and x < 20:
        print('20보다 작은 양수입니다.')

파이썬에서는 위 조건식을 더 간단하게 만들 수 있다.

if 0 < x < 20:
        print('20보다 작은 양수입니다.')

0 < x < 20 처럼 부등호를 연달아 사용했다.
조건식을 만들 때는 부등호의 방향과는 관계 없이 조건의 뜻만 만족하면 된다.
즉, x > 00 < x 의 뜻은 같습니다.

if의 조건식이 참일 때는 if의 코드를 실행하고, 거짓일 때는 else의 코드를 실행한다는 점이 중요하다.
그리고 조건식이 여러 개일 때는 논리 연산자를 활용하면 된다는 점을 기억하자.

심사문제

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

input = input().split()
국어 = int(input[0])
영어 = int(input[1])
수학 = int(input[2])
과학 = int(input[3])
평균 = (국어 + 영어 + 수학 + 과학) / 4

if 0 <= 국어 <= 100 and 0 <= 영어 <= 100 and 0 <= 수학 <= 100 and 0 <= 과학 <= 100:
    if 평균 >= 80:
        print('합격')
    else:
        print('불합격')
else:
    print('잘못된 점수')

input().split()의 결과는 문자열 상태이므로 mapint를 사용하여 정수로 변환해줍니다.

map(f, iterable)함수(f)반복 가능한(iterable) 자료형을 입력으로 받는다.

iterable 자료형(두 번째 매개변수)이 순서대로 f(첫 번째 매개변수)의 입력값으로 들어가고 결괏값을 반환한다.

input = input().split()
점수 = list(map(int, input))  # list 함수 사용하기
print(점수)

👉 
입력: 99 85 101 90
결과: [99, 85, 101, 90]

list 함수 안 쓰면 <map object at 0x7ff4d91eeee0> 이렇게 나옴

map의 결과를 리스트로 보여 주기위해 list 함수를 사용하여 출력하였다.

list 함수 안 쓰면 <map object at 0x7ff4d91eeee0> 이렇게 나옴

0개의 댓글