스터디/파이썬 스터디 강의자료

[4팀/이제은] 3차시 파이썬 스터디 - 조건문

알 수 없는 사용자 2023. 3. 23. 02:11

3차시_조건문_강의안.pdf
0.50MB
3차시_조건문_과제.pdf
0.29MB

1. 조건문의 개념

조건문(conditional statement)

  • 조건에 따라 특정 동작을 하도록 하는 프로그래밍 명령어
  • 일상 속 예시 : 앞 지하철과의 간격이 10m 이하면 속도를 10km 낮춰라, 스마트폰 잠금 해제 패턴을 5회 틀리면 30초 동안 대기 상태로 만들어라 등

조건문의 구성

  • 조건을 나타내는 기준 + 실행해야 할 명령
  • "돈이 있으면 택시를 타고, 돈이 없으면 걸어간다." 라는 문장을 조건문을 사용하여 프로그래밍
>>> money = True
>>> if money:
        print("택시를 타고 가라")
    else:
        print("걸어 가라")

돈이 있다는 가정 하에 money를 참으로 대입해주었습니다. 따라서 if문 다음 문장이 수행되어 ‘택시를 타고 가라’가 출력이 됩니다.

 

2. if문의 기본 구조

if문은 if, elif, else 세단계로 이루어져있습니다. if블럭에서는 첫 조건, elif블럭에서는 if문에서 사용한 조건을 만족하지 않는 다른 조건, else블럭에는 위에서 정한 모든 조건을 만족하지 않을 때 실행할 명령어들을 넣어줍니다.

 

if-else문

if 조건문:  # if를 입력하고 조건 삽입 후 ':' 입력
    수행할 문장1  # if를 입력하고 조건 삽입 후 입력
    수행할 문장2  # 같은 조건에서 계속 수행할 명령일 경우 들여쓰기 유지
    ...
else:  # 조건이 불일치할 경우 수행할 명령
    수행할 문장A  # 조건 불일치 시 수행할 명령 입력
    수행할 문장B  # 조건 불일치 시 수행할 명령일 경우 들여쓰기 유지
    ...

 

조건문 문법

  • 조건문의 문법에서 지켜야 하는 것들 3가지
  1. 콜론 붙이기(:)
    if 뒤에는 참과 거짓을 판단할 수 있는 조건문이 와야 하고, 조건문이 끝나면 반드시 콜론(:)을 붙여야 합니다. 특별한 의미가 있다기보다는 파이썬의 문법 구조입니다. 앞으로 배울 while이나 for, def, class도 역시 문장의 끝에 콜론(:)이 항상 들어가기 때문에 빠트리지 않도록 주의해주세요.
  2. 들여쓰기(identation)
    if문을 만들 때는 if 조건문: 아래 문장에 if문에 속하는 모든 문장에 들여쓰기(identation)를 해주어야 합니다. 
  3. if의 조건이 거짓일 경우 else문이 수행
    마지막으로, if의 조건이 거짓일 경우 else문이 수행됩니다. else문은 생략해도 상관없습니다. 만약 조건에 해당하지 않는 경우에 처리해야 할 명령이 있다면 else문을 넣으면 됩니다.
money = True
if money:
    print("택시를")
    print("타고")
    print("가라")
money = True
if money:
    print("택시를")
print("타고")
    print("가라")
money = True
if money:
    print("택시를")
    print("타고")
        print("가라")

코드 실행 결과 : 첫번째 경우를 제외하고 두번째, 세번째 코드에서는 오류가 납니다.

오류명 identationerror : 들여쓰기에 문제가 생겼다 👉 들여쓰기는 언제가 같은 깊이로 해주어야 한다!

 

- 들여쓰기 기호, 공백(spacebar) vs 탭(tab)

어느 쪽도 상관이 없지만 2가지를 혼용해서 쓰지는 말자! 공백으로 할 거면 항상 공백으로 통일하고, 탭으로 할 거면 항상 탭으로 통일해서 사용하는 습관을 갖도록 합시다.

 

- 참고로 요즘 파이썬 커뮤니티에서는 들여쓰기를 할 때 공백(Spacebar) 4개를 사용하는 것을 권장 (출처: 점프투 파이썬 03-1 if문)

 

 

[실습] if-else문 살펴보기

기본 구조를 사용하여 시험점수를 입력받아 점수에 따라 pass와 fail을 나누는 코드를 만들어보겠습니다.

score = int(input('점수를 입력하세요: '))
if score >= 70:
  result = 'pass'
else:
  result = 'fail'
print(result)

70점 이상이라는 조건이 참이면 pass, 거짓이면 else문을 따라 fail이 출력되는 것을 확인해볼 수 있었습니다.

 

3. 조건의 판단

조건문이란?

→ if 조건문에서 “조건문”이란 참과 거짓을 판단하는 문장

조건문이란 참과 거짓을 판단하는 문장입니다. 조건문에 사용되는 다양한 연산자와 함께 조건을 판단하는 코드인 조건문 코드를 살펴보도록 하겠습니다.

 

비교연산자

비교 연산자(또는 조건 연산자)는 어떤 것이 큰지 작은지, 그리고 같은지를 비교하는 것으로 그 결과는 참이나 거짓이 됩니다.

다음 표에서 비교연산자들을 확인해볼 수 있습니다.

이제 비교연산자를 이용하여 조건문을 만들어보도록 하겠습니다.

 

>>> money = 2000
>>> if money >= 3000:
...     print("택시를 타고 가라")
... else:
...     print("걸어가라")
...
걸어가라

조건문이 거짓이 되기 때문에 else문 다음 문장을 수행하게 됩니다. 

 

True와 False 치환

이제 True와 Flase의 치환에 대해 알아보겠습니다. 컴퓨터는 기본적으로 이진수만 처리할 수 있으므로 True는 1로, False는 0으로 처리합니다. 그렇다면 예시 문장을 보며 True와 False가 각각 치환되는 과정을 살펴보겠습니다.

print(3 > 5) < 10

결과는 True로 나옵니다. 하나하나 치환해보도록 합시다.

먼저 3 > 5 는 False입니다. 따라서 False는 결국 0으로 치환됩니다. 그래서 이것을 다시 치환하면 (0) < 10 이 되고 이 값은 당연히 참이기 때문에 True가 반환되는 것입니다.

 

논리연산자(and, or, not)

다음으로 알아야 할 내용은 논리연산자입니다. 논리연산자인 and, or, not을 사용하면 조건문을 좀 더 확장할 수 있습니다.

예시를 통해 or 연산자의 사용법을 알아보도록 합시다.

money = 2000
card = True
if money >= 3000 or card:
    print("택시를 타고 가라")
else:
    print("걸어가라")
...
택시를 타고 가라

결과는 다음과 같이, 택시를 타고 가라고 나옵니다. 

비록 돈은 2000원이 있어 택시를 탈 금액은 안되지만 card 가 true이기 때문에 money >= 3000 or card 조건문이 참이 됩니다. 따라서 if문에 속한 “택시를 타고 가라” 문장이 출력됩니다.

 

 

[+] 조건문에서 아무 일도 하지 않게 설정하기

가끔 조건문의 참, 거짓에 따라 실행할 행동을 정의할 때, 아무런 일도 하지 않도록 설정하고 싶을 때가 있습니다. 

예를 들어 봅시다. “주머니에 돈이 있으면 가만히 있고 주머니에 돈이 없으면 카드를 꺼내라”

이럴 때 사용하는 것이 바로 pass입니다. pass를 활용한 예시를 코드로 확인해보도록 하겠습니다.

pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket:
    pass 
else:
    print("카드를 꺼내라")
...

결과는 아무 일도 일어나지 않습니다. pocket 리스트 안에 money 문자열이 있기 때문에 if문 다음 문장인 pass가 수행되고 아무 결괏값도 보여 주지 않는 것을 알 수 있습니다. 경우에 따라서 아무런 일도 하지 않도록 설정하고 싶을 땐 pass를 활용해서 조건문을 작성해보도록 합시다.

 

 

4. 다양한 조건을 판단하는 elif

조건이 여러 개일 경우

if와 else만으로는 다양한 조건을 판단하기 어렵습니다. 다음 예를 보더라도 if와 else만으로는 조건을 판단하는 데 어려움을 겪게 됩니다.

 

"주머니에 돈이 있으면 택시를 타고, 주머니에 돈은 없지만 카드가 있으면 택시를 타고, 돈도 없고 카드도 없으면 걸어 가라.”

 

위 문장을 보면 조건을 판단하는 부분이 두 군데가 있습니다.

1. 먼저 주머니에 돈이 있는지를 판단해야 하고 

2. 주머니에 돈이 없으면 다시 카드가 있는지 판단해야 합니다. 

이처럼 조건이 2개 이상으로 중첩될 경우가 발생하게 됩니다. if와 else를 사용하여 코드를 작성보도록 합시다.

pocket = ['paper', 'handphone']
card = True
if 'money' in pocket:
    print("택시를 타고가라")
else:
    if card:
        print("택시를 타고가라")
    else:
        print("걸어가라")
...
택시를 타고가라

작성해보니 이해하기 어렵고 산만한 느낌이 드는 것을 알 수 있습니다. 이러한 복잡함을 해결하기 위해 파이썬에서는 다중 조건 판단을 가능하게 하는 elif를 사용합니다.

 

if-elif-else

elif는 else if의 줄임말로, if문과 같은 방법으로 조건문을 표현할 수 있습니다. elif문은 여러개의 조건을 하나의 if문에서 검토할 수 있도록 해주는 편의성을 가집니다.

 

앞서 작성했던 코드를 elif를 활용해서 다시 작성해보겠습니다.

pocket = ['paper', 'cellphone']
card = True
if 'money' in pocket:
    print("택시를 타고가라")
elif card: 
    print("택시를 타고가라")
else:
    print("걸어가라")
...
택시를 타고가라

결과값은 아까와 같게 나오지만 이전의 if와 else만 사용했던 코드보다 훨씬 알아보기 쉽고 간결하다는 것을 볼 수 있습니다. 즉 정리하자면, elif는 이전 조건문이 거짓일 때 수행되며 개수에 제한 없이 사용할 수 있습니다.

 

 

[실습] 학점 계산기

그렇다면 if-elif-else문을 활용하여 학점 계산기를 한번 만들어보도록 하겠습니다.

90점 이상일 경우 A, 80점 이상일 경우 B, 70점 이상일 경우 C, 60점 이상일 경우 D, 60점 미만일 경우느 F로 출력되는 학점계산기를 만들어보겠습니다.

score = int(input("Enter your score : "))

if score >= 90:  # 90점 이상일 경우 A
    grade = 'A'
elif score >= 80:  # 80점 이상일 경우
    grade = 'B'
elif score >= 70:  # 70점 이상일 경우 C
    grade = 'C'
elif score >= 60:  # 60점 이상일 경우 D
    grade = 'D'
else:
    grade = 'F'  # 모든 조건에 만족하지 못할 경우 F

print(grade)

코드에서 if문의 조건이 맞지 않으면 다음 elif문으로 이동하고, 그 조건에 맞지 않으면 그 다음 elif문으로 이동하게 됩니다. 중간에 조건문이 True가 된다면 별도의 확인 없이 바로 if문 그룹을 빠져나옵니다.

즉, 이 코드에서는 첫 번째 if문부터 마지막 else문까지가 하나의 if문 그룹으로, 하나의 조건만 맞으면 다른 조건들과의 비교하지 않게 됩니다.