[혼공학습단 13기] 2주차 과제

양승빈·2025년 1월 18일
0

혼공학습단 13기

목록 보기
4/5

2주차 과제

  • 기본 과제: p.187 3번 문제 풀고 본인이 태어난 해와 띠를 출력하는 결과값 화면 인증하기
  • 추가 과제: else, elif 구문 정리하기

1. 사용자에게 태어난 연도를 입력받아 띠를 출력하는 프로그램을 작성해주세요.작성 시 입력 받은 연도를 12로 나눈 나머지를 사용합니다.
(나머지가 0~11일 때, 순차적으로 원숭이~양입니다.)

srt_input = input("테어난 해를 입력해 주세요>")
birth_year = <공란>

if <공란>:
    print("원숭이 띠입니다.")
elif <공란>:
    print("닭 띠 입니다.")

     <중략>

elif <공란>:
    print("양 띠 입니다.")

<작성 코드>

<결과>

<특이사항>

  • 위 코드는 elif문을 활용한 다중 조건문으로, 입력 받은 값이 지정된 조건을 충족하면 지정된 값을 출력하는 구조이다.

  • 단순한 구조로 str_input, birth_year, print, if-elif를 거치고 있으며, 큰 단락으로 나누어 본다면 두 개로 나누어 볼 수 있다.

    	1. str_input~print: 입력 데이터 처리 
    	2. if-elif: 지정된 조건(나머지)을 충족하는 구문 확인 시 해당 구문 내 출력문 실행(초록색 화살표)  

2. else, elif 구문

  • else는 if 조건문 뒤에 사용하며, if 조건문의 조건이 거짓인 경우 실행된다. (조건 <= 2)
  • elif는 세 개 이상의 조건을 사용할 때 사용한다. (조건 > 2)

아래는 else, elif를 활용한 구문이다.


① (p.177) if-else를 활용한 짝/홀수 구분

# 입력
number = int(input("정수 입력>"))

# 조건문
if number % 2 == 0:
    print("짝수입니다") # 참 (나머지=0, 짝수)
else:
    print("홀수입니다") # 거짓 (나머지!=0, 홀수)

<결과>


② (p.178) 계절 구하기

# datetime 라이브러리
import datetime 

# 현재 날짜 및 변수 선언
now = datetime.datetime.now()
month = now.month
season = '' 

# 계절 변수 저장
if 3 <= month <= 5:
    season = '봄'
elif 6 <= month <= 8:
    season = "여름"
elif 9 <= month <= 11:
    season = "가을"
else: 
    season = "겨울"

# 출력 
print(f"{month}월은 {season}입니다. ")

<결과>

<특이사항>

  • 위 코드는 season 변수를 선언하고, 조건문 내에서 실행된 조건문 결과를 저장하는 구조이다.
  • 이를 통해 print에서 formatting을 활용해 직관적으로 볼 수 있다.
  • 책에서 제시된 코드와 살짝 다름름.

③ (p.180-181) 유머로 조건문 구현하기

# 변수 선언
score = float(input('학점 입력 >>'))

# 조건문
if score == 5.0:
    print('저런... 당신은 교수님의 노예')
elif 4.5 <= score < 5.0: # 조건문 중복 검사 1
    print('신')
elif 4.2 <= score < 4.5: # 조건문 중복 검사 2
    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('시대를 앞서가는 혁명의 씨앗')

<결과>

<특이사항>

  • elif 구현 시 if 조건문은 위에서 아래로 흐른다는 점을 기억해야 한다. 이미 상위 조건문에서 아래로 내려간 경우 위 조건에 충족하지 않았기 때문에 내려오는 것이며, 하위 조건문에서 이를 다시 검사할 이유가 전혀 없다 (line 8-11)
  • 저런... 당신은 교수님의 노예 :(

④ (p.182) 뭔가 없는 것 같은 False

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

print ('# if 조건문에 빈 문자열 넣기')
if '':
    print('빈 문자열은 True로 변환')
else:
    print('빈 문자열은 False로 변환')
    print()

print( '# if 조건문에 빈 리스트 넣기')
if []:
    print('빈 리스트는 True로 변환')
else:
    print('빈 리스트는 False로 변환')

<결과>

<특이사항>

  • if 조건문의 매개변수에 bool이 아닌 다른 값이 올 때는 자동으로 이를 bool로 변환해서 처리한다.
  • False 변환: None, 0(int, float), 빈 컨테이너(빈 문자열, 바이트 열, 리스트, 튜플, 딕셔너리 등)
  • 보통 if 조건문에 비교 연산자가 없고 어떤 변수만 놓여 있는 경우 이러한 변환을 사용한다. (뭔가 없는 것 같은 Flase)

⑤ (p.183) 어라 구문이 실행이 안되네

# 입력 
number = int(input('정수 입력 >>'))

# 조건문 
if number > 0:
    
else: 

<결과>

<특이사항>

  • Python에서는 if 조건문 사이에는 무조건 들여쓰기 4칸을 쓰고 코드를 작성해야 구문이 성립된다. 해당 규칙이 지켜지지 않는 경우 'IndentationError'가 발생한다. (다른 언어는 정상적으로 실행)

⑥ (p.184) pass

# 입력 
number = int(input('정수 입력 >>'))

# 조건문 
if number > 0:
    pass
else: 
    pass

<결과>

<특이사항>

  • [⑤ (p.183) 어라 구문이 실행이 안되네]에서 이야기한 구조적 오류를 피하기 위해 pass 키워드를 사용할 수 있다. (곧 개발할거임. 그런 느낌)

⑦ (p.185) raise NotImplementedError

# 입력 
number = int(input('정수 입력 >>'))

# 조건문 
if number > 0:
    raise NotImplementedError
else: 
    raise NotImplementedError

<결과>

<특이사항>

  • pass와 같이 구현하지 않은 부분을 표현하는 방법이다. 다만, 그 방법을 Error를 통해 표현하는 차이가 있다.
  • NotImplementedError는 코드는 정상적으로 실행되나, 구현되지 않은 부분에 들어서면 Error를 발생시킨다. (파업 선언이네용)

0개의 댓글

관련 채용 정보