T-SUM 멘토링

[T-SUM] 5주차 자료 - if/else/elif 조건문, and/or

LooanCheong 2023. 7. 6. 18:32
반응형

오늘의 내용 미리보기

본문

세상을 살다 보면 조건에 따라 결과가 달라지는 경우가 있습니다.

비밀번호가 맞으면 금고가 열린다거나,
올바른 출입증이 아니면 출입이 안 된다거나 뭐 그런 상황이 있어요.

코딩을 하다가도 이런 상황을 자주 마주칩니다.
특정 사용자는 이용이 불가능한 게시판이 있다던지,
로그인을 하지 않으면 접속이 안된다던지 하는 그런 상황이 있죠.

우리는 이런 상황을 이렇게 표현합니다.
'만약 ~ 라면'
이를 조건문이라고 합니다.

파이썬에서는 이를 if와 else를 사용해서 표현합니다.

우선 예시를 한 번 볼까요?

배우지는 않았지만 어째서인지 읽을 수는 있을 것 같죠?
있는 그대로 읽으면 됩니다.

만약 10이 7보다 크다면(조건) 정답을 출력하라(결과)

이런 식으로 조건문은 조건과 그에 따른 결과로 이루어져 있습니다.
사용 방법은 if를 써주고 그 뒤에 조건을 작성하면 됩니다.
그 이후 함수를 만들던 것과 같이 콜론(:)을 작성해 주고
한 칸 들여 쓰기 해서 안에 결과를 작성하면 됩니다.

그럼 부등호를 한 번 반대로 뒤집어 볼까요?

일단 직관적으로 보기에는 틀린 문장입니다.
그렇다면 파이썬은 어떤 응답을 줄까요?

코드를 실행해 봅시다.
그러면 아무런 응답도 하지 않습니다.

오류일까요?
그렇지 않아요.
파이썬은 제대로 작동했습니다!
다만 우리는 조건이 참일 때, 정답을 출력하라고 했기 때문에
조건이 거짓이 된 지금 아무것도 출력하지 않은 상태입니다.

중요한 문장이 나왔습니다.
조건이 참이면 결과를 수행한다.
즉, 조건이 거짓이면 해당 조건문은 실행되지 않습니다.

조건이 거짓

그럼 모든 조건을 찾아서 작성해주어야 하는 걸까요?

그렇지 않습니다.
이러한 상황에는 else를 사용해서 해결합니다.

else는 조건에 맞지 않는 모든 상황에 대해서 결과를 수행합니다.
즉, if가 아닌 모든 상황에 대해서 결과를 수행합니다.

예시를 하나 봅시다.
유저가 로그인하면 인사를 하는 페이지가 있다고 가정합시다.
로그인을 하지 않았으면 로그인을 하라고 안내를 한다고도 가정합시다.

이때 조건은? "유저가 로그인한다."
이 때 결과는? "인사를 한다."
그렇지 않으면? "로그인 요청을 한다."

이에 맞춰서 조건문을 작성해 봅시다.
편의상 로그인은 True/False로 작성합시다.

작성을 완료했으면 더보기를 눌러서 비교해 봅시다.

더보기
어렵지 않았죠?

코드에는 정답은 없으니까 해당 기능이 잘 작동하면 상관없습니다.

그런데 가끔은 조건이 여러 가지일 때가 있습니다.

놀이공원 이용 요금을 받는다고 생각해 봅시다.

어린이(~7세)는 무료입장
청소년은(8세~18세) 7천 원
성인(19세~64세)은 1만 원
노인(65세~)은 5천 원이라고 해봅시다.

이러한 상황에서는 어떻게 해야 할까요?

바로 'elif'를 사용합니다.
elif는 else if의 줄임말입니다.
파이썬에서만 사용되는 문법이에요.

if라는 조건이 있고,
또 다른 조건을 달고 싶을 때 elif를 사용합니다.

어떻게 사용할지 한 번 작성해 볼까요?
age를 입력을 받아서 실행하는 코드를 만들어보세요.

더보기
범위에 유의합시다

범위를 잘못 처리하면 이렇게 됩니다.

8살의 경우 어느 범위에도 포함되지 않기 때문에 else의 결과를 출력합니다.

또한 범위가 중복인 경우에도 주의합시다.

7살의 경우 무료입장도 가능하고,
7천 원에 입장도 가능한 범위로 지정이 되었습니다.
이런 때는 제일 우선 만난 조건을 기준으로 처리를 합니다.
그래서 위의 예시의 경우 무료입장으로 결과가 나왔습니다.

조건의 케이스가 여러 가지인 경우도 있지만
다음과 같은 경우도 존재합니다.

예를 들어 아까 놀이공원의 예시에서 군인도 무료로 입장이 가능하다고 합시다.

그렇다면 age가 7세 이하이거나(or) 군인이면 무료입장이 가능합니다.

이렇듯 'or'을 써서 여러 개의 조건에 하나의 결과가 나오는 케이스를 처리할 수 있습니다.

이렇게

이러한 경우에는 군인이므로 나이에 상관없이 무료입장이 됩니다.

또한 여러 개의 조건을 만족했을 때,
결과를 출력하고 싶은 경우가 있을 수 있습니다.

예를 들어 봅시다.
비밀번호가 정확하고,
본인인 경우에만 열리는 핸드폰이 있다고 가정합시다.

이 경우에는 조건이 2가지 있습니다.
1. 비밀번호가 맞다.
2. 본인이다.

이 2가지 모두에 해당되지 않는 경우 핸드폰이 열리지 않습니다.

즉, 조건이 2가지이므로 이 2가지를 동시에 만족하는 조건문이 필요합니다.
이 경우에는 'and'를 사용합니다.

이런 식으로 사용이 가능합니다.
그리고 여러 번 사용하는 것도 가능합니다.
qr코드 인증도 추가가 되었다고 생각해 봅시다.

이런 식으로 조건을 여러 가지 사용하는 방법도 있습니다.

마지막으로 복습하기

이번 시간에는 if/elif/else와 and/or를 사용한 조건문을 배웠습니다.

다음 시간에 만나요 안뇽

숙제

https://www.acmicpc.net/problem/9498

 

9498번: 시험 성적

시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

https://www.acmicpc.net/problem/1330

 

1330번: 두 수 비교하기

두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.

www.acmicpc.net

https://www.acmicpc.net/problem/2753

 

2753번: 윤년

연도가 주어졌을 때, 윤년이면 1, 아니면 0을 출력하는 프로그램을 작성하시오. 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다. 예를 들어, 2012년은 4의 배수이면서

www.acmicpc.net

얘는 보너스
https://www.acmicpc.net/problem/11942

 

11942번: 고려대는 사랑입니다

첫째 줄에 “고려대학교”를 출력하세요.

www.acmicpc.net

반응형