MLOps 부트캠프 by 한경+토스뱅크/Python

조건문

나니니 2024. 6. 29. 18:32

파이썬에서 True, False의 첫 글자는 반드시 대문자로 적어야 함

불 자료형과 if 조건문

# 불 만들기: 비교 연산자 (*숫자 or 문자열에 적용 가능)
== 같다
!= 다르다
< 작다
> 크다
<= 작거나 같다
>= 크거나 같다

# 불 연산하기: 논리 연산자
not 아니다: 불을 반대로 전환
and 그리고: 두개 모두 참일 때 True, 그 외는 모두 False
or 또는: 하나만 참이라도 True, 두개 모두 거짓일 때 False

# not 연산자
단항 연산자이며, 참과 거짓을 반대로 바꿀 때 사용

# and 연산자와 or 연산자
and: 양쪽 모두 참일 때만 True
or : 둘중 하나만 참이어도 True

# if 조건문
if 조건문 구조
if 불 값이 나오는 표현식: # if의 조건문 뒤에는 반드시 콜론(:)을 붙여야 함
	불 값이 참일 때 실행할 문장 # if문 다음 문장은 4칸 들여쓰기 후 입력! 그렇지 않을 경우 오류 발생
	불 값이 참일 때 실행할 문장
코드 작성 시, 들여쓰기 중요함!
개발 전용 에디터에서 Tab키 클릭 시, 자동으로 띄어쓰기 네 개 적용됨 -> 소프트탭(soft tab)
Tab: 들여쓰기
Shift + Tab: 들여쓰기 제거

(*여러 줄 동시 적용 시, 여러 줄 선택한 후에 Tab 누르면 일괄 적용됨)

날짜/시간 활용하기

# 날짜/시간과 관련된 기능을 가져옵니다. 
import datetime

# 현재 날짜/시간을 구합니다. 
now = datetime.datetime.now()

# 출력합니다. 
print(now.year, "년")
print(now.month, "월")
print(now.day, "일")
print(now.hour, "시")
print(now.minute, "분")
print(now.second, "초")

#결과값
2024 년
6 월
29 일
12 시
35 분
27 초
# format() 함수 이용 시

# 날짜/시간과 관련된 기능을 가져옵니다. 
import datetime

# 현재 날짜/시간을 구합니다. 
now = datetime.datetime.now()

# 출력합니다. 
print("{}년 {}월 {}일 {}시 {}분 {}초".format(
    now.year,
    now.month,
    now.day,
    now.hour,
    now.minute,
    now.second
))

# 결과값
2024년 6월 29일 12시 39분 16초

! 대부분의 프로그래밍 언어는 월을 0~11까지로 출력함, 그러나 파이썬은 그대로 출력하므로 헷갈림 주의!

# 오전 오후 구분

# 날짜/시간과 관련된 기능을 가져옵니다. 
import datetime

# 현재 날짜/시간을 구합니다.
now = datetime.datetime.now()

# 오전 구분
if now.hour < 12:
    print("현재 시각은 {}시로 오전입니다!".format(now.hour))

# 오후 구분
if now.hour >= 12:
    print("현재 시각은 {}시로 오후입니다!".format(now.hour))
    
# 결과값
현재 시각은 12시로 오후입니다!
# 계절 구분

# 날짜/시간과 관련된 기능을 가져옵니다. 
import datetime

# 현재 날짜/시간을 구합니다.
now = datetime.datetime.now()

# 봄 구분
if 3 <= now.month <= 5:
    print("이번 달은 {}월로 봄입니다!".format(now.month))

# 여름 구분
if 6 <= now.month <= 8:
    print("이번 달은 {}월로 여름입니다!".format(now.month))

# 가을 구분
if 9 <= now.month <= 1:
    print("이번 달은 {}월로 가을입니다!".format(now.month))

# 겨울 구분
if now.month == 12 or 1 <= now.month <= 2:
    print("이번 달은 {}월로 겨울입니다!".format(now.month))
    
# 결과값
이번 달은 6월로 여름입니다!
# 짝수와 홀수 구분하기

# 입력을 받습니다. 
number = input("정수 입력> ")

# 마지막 자리 숫자를 추출
last_character = number[-1]

# 숫자로 변환하기
last_number = int(last_character)

# 짝수 확인
if last_number == 0 \
    or last_number == 2 \
    or last_number == 4 \
    or last_number == 6 \
    or last_number == 8:
    print("짝수입니다")

# 홀수 확인
if last_number == 1 \
    or last_number == 3 \
    or last_number == 5 \
    or last_number == 7 \
    or last_number == 9:
    print("홀수입니다")
    
# 결과값
정수 입력> 52
짝수입니다

정수 입력> 273
홀수입니다
in 문자열 연산자를 활용해 짝수/홀수 구분

# 입력을 받습니다. 
number = input("정수 입력> ")
last_character = number[-1]

# 짝수 조건
if last_character in "02468":
    print("짝수입니다")

# 홀수 조건
if last_character in "13570":
    print("홀수입니다")

# 결과값
정수 입력> 52
짝수입니다

문자열 연산보다 숫자열 연산이 조금 더 빠름

이를 활용해 '숫자 연산'을 통한 홀짝 구분 코드

# 나머지 연산자 활용해 짝수/홀수 구분

# 입력을 받습니다.
number = input("정수 입력> ")
number = int(number)

# 짝수 조건
if number % 2 == 0:
    print("짝수입니다")

# 홀수 조건
if number % 2 == 1:
    print("홀수입니다")
    
# 결과값
정수 입력> 52
짝수입니다

if~else와 elif 구문

# else 조건문의 활용
if 조건문의 조건이 거짓일 때 실행됨, 조건 비교를 한번만 하므로 효율적임

# 입력을 받습니다. 
number = input("정수 입력> ")
number = int(number)

# 조건문을 사용합니다. 
if number % 2 == 0:
    # 조건문이 참일 때, 즉 짝수 조건
    print("짝수입니다")

else:
    # 조건이 거짓일 때, 즉 홀수 조건
    print("홀수입니다")
    
# 결과값
정수 입력> 13
홀수입니다

# elif 구문
세 개 이상의 조건을 연결하기 위해 사용

# 날짜/시간과 관련된 기능을 가져옵니다. 
import datetime

# 현재 날짜/시간을 구하고
# 쉽게 사용할 수 있게 월을 변수에 저장합니다. 
now = datetime.datetime.now()
month = now.month

# 조건문으로 계절을 확인합니다. 
if 3 <= month <= 5:
    print("현재는 봄입니다.")
elif 6 <= month <= 8:
    print("현재는 여름입니다.")
elif 9 <= month <= 11:
    print("현재는 가을입니다.")
else:
    print("현재는 겨울입니다.")
    
# 결과값
현재는 여름입니다.

# if 조건문을 효율적으로 사용하기
# 변수를 선언합니다. 
score = float(input("학점 입력> "))

# 조건문을 적용합니다. 
if score == 4.5:
    print("신")
elif 4.2 <= score:
    print("교수님의 사랑")
elif 3.5 <= score:
    print("현 체제의 수호자")
elif 2.8 <= score:
    print("일반인")
elif 2.3 <= score:
    print("일탈을 꿈꾸는 소시민")
elif 1.75 <= score:
    print("오락문화의 선구자")
elif 1.0 <= score:
    print("불가촉천민")
elif 0.5 <= score:
    print("자벌레")
elif 0 < score:
    print("플랑크톤")
else:
    print("시대를 앞서가는 혁명의 씨앗")
    
# 결과값
학점 입력> 3.4
일반인

# False로 변환되는 값
if 조건문의 매개변수에 불이 아닌 다른 값이 올 때, 불로 자동 변환됨
그러므로 어떤 값이 False로 변환되는지 알고 있어야 함
False로 변환되는 값: None, 0, 0.0, 빈 컨테이너(빈 문자열, 빈 바이트열, 빈 리스트, 빈 튜플, 빈 딕서녀리 등)
이 외는 모두 True로 변환됨

print("# if 조건문에 0 넣기")
if 0:
    print("0은 True로 변환됩니다")
else:
    print("0은 False로 변환됩니다")
    print()

print("# if 조건문에 빈 문자열 넣기")
if "":
    print("빈 문자열은 True로 변환됩니다")
else:
    print("빈 문자열은 False로 변환됩니다")
    
# 결과값
# if 조건문에 0 넣기
0은 False로 변환됩니다

# if 조건문에 빈 문자열 넣기
빈 문자열은 False로 변환됩니다

# pass 키워드
프로그래밍의 전체 골격을 잡아 놓고 추후 만들겠다는 의도
이때, 골은 조건문, 반복문, 함수, 클래스 등의 기본 구문에 해당함

# 입력을 받습니다. 
number = input("정수 입력> ")
number = int(number)

# 조건문 사용
if number > 0:
    # 양수일 때: 아직 미구현 상태입니다. 
    pass
else:
    # 음수일 때: 아직 미구현 상태입니다. 
    pass
raise NotImplementedError
코두 실행 시, 정상적으로 진행되지만 구현되지 않은 부분에 들어서면 NotImplementedError라는 오류를 발생시킴
# 입력을 받습니다. 
number = input("정수 입력> ")
number = int(number)

# 조건문 사용
if number > 0:
    # 양수일 때: 아직 미구현 상태입니다. 
    raise NotimplementedError
else:
    # 음수일 때: 아직 미구현 상태입니다. 
    raise NotImplementedError​


도전 문제

ch03_1

# 입력값 받기
answer = input("입력: ")

# 조건문 설정
if "안녕" in answer:
    print("안녕하세요.")
elif "몇 시" in answer:
    import datetime
    now = datetime.datetime.now()
    print(f"지금은 {now.hour}시 입니다.")
else:
    print(answer)

ch03_2

# 입력값
number = int(input("정수를 입력해주세요: "))

# 조건문 입력
if number % 2 == 0:
    print(f"{number}은 2로 나누어 떨어지는 숫자입니다.")
else:
    print(f"{number}은 2로 나누어 떨어지는 숫자가 아닙니다.")
 
if number % 3 == 0:
    print(f"{number}은 3으로 나누어 떨어지는 숫자입니다.")
else:
    print(f"{number}은 3으로 나누어 떨어지는 숫자가 아닙니다.")

if number% 4 == 0:
     print(f"{number}은 4로 나누어 떨어지는 숫자입니다.")
else:
    print(f"{number}은 4로 나누어 떨어지는 숫자가 아닙니다.")

if number % 5 == 0:
     print(f"{number}은 5로 나누어 떨어지는 숫자입니다.")
else:
    print(f"{number}은 5로 나누어 떨어지는 숫자가 아닙니다.")