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

[3차시/김규리] 3차시 파이썬 스터디 - 조건문

kyuree 2023. 3. 22. 00:14

3차시_조건문_과제해설.docx
0.48MB
3차시_조건문_과제.docx
2.23MB
3차시_조건문_강의안.pdf
3.49MB

 

*모든 출처는 도서 "데이터 과학을 위한 파이썬 프로그래밍"입니다

#1. 개요

제어 구조


  • 순차구조(기본)
    • 위 → 아래
  • 선택구조
    • 조건에 따라 실행할 명령어 다름
    • if, else, elif
  • 반복구조
    • 특정 명령어 반복
    • for, range, while

학점 부여하는 프로그램


  • 성적 데이터

  • 과정 구상하기

1. 점수에 따른 학점의 기준 선정

    ex. 95점 이상 ‘A+’ & 60점 미만 ‘F’

2. 기준에 따라 첫째 점수 판단

    ex. 38점은 60점 미만이므로 ‘F’

3. 다음 점수 이동하며 2.반복

    ex. 37점은 60점 미만이므로 ‘F’

4. 판단할 점수 없을 때 프로그램 종료

  • 고려할 사항
    • 어떤 기준으로 결정해야 하는가? → 조건의 설정
    • 언제까지 해야 하는가? → 반복의 설정
    • 효율적 문제 해결 가능!

#2. 개념

  • 조건에 따라 특정 동작을 하도록 하는 명령어

실생활에서 사용되는 예


  • 앞 지하철과의 간격이 10m 이하면, 속도 10km 이하로 늦추기
  • 사용자가 20세 이하면, VOD 재생하지 말기
  • 스마트폰 잠금 해제 패턴이 5회 틀리면, 20초 동안 대기 상태로 만들기

조건문의 구성


  • 조건 나타내는 기준
    • ex. ‘스마트폰 잠금 해제 패턴이 5회 틀리면’
  • 실행해야 할 명령
    • ex. ‘20초 동안 대기 상태’
  • 조건은 참(True) & 거짓(False)로 구분
    • 명확히 구분되어야 함

if - else 문


  • if, else, elif 등 명령 키워드
  • 기본 문법

  • 설명
    • if 뒤 → 참 거짓 판단 가능한 조건문 + 콜론(:)
    • 들여쓰기 → 참일 경우 수행할 명령
      • 명령?
        • ex. a = 30과 같은 파이썬 코드
      • 들여쓰기?
        • space키 *4칸 or tab 키
        • 코드의 시각적 이해 도움
    • if 뒤 조건 거짓 → else문 수행
      • else 문 생략 가능
      • 처리해야 할 명령있다면 삽입
  • 예제
    • 변수 숫자와 비교
a = 7

if a==6:
	print('A') #False 

if a==7:
	print('B') #True

if a==8:
	print('C') #False
else:
	print('D') #print('C')대신 실행
    • 나이로 가입 여부 확인
      • if-else
print("Tell me your age?")

myage = int(input())

if myage < 30:
	print("Welcome to the Club") #True

else:
	print("Oh! No. You are not accepted.") #False

  → 조건 : myage < 30

    • 실행화면

  • 과일 순위 출력
    • 과일 선호하는 순으로 저장한 리스트 생성 → 과일 이름 입력받아 해당 과일 선호 순위 출력
    • 코드
fruit = ['사과','딸기','오렌지','바나나']

search = input('찾는 과일은?')
if search in fruit:
	print(fruit.index(search) + 1,'위 입니다')
else:
	print(search, '은/는 순위에 없습니다')
  • 실행 화면

조건의 판단


  • True & False
    • 1 + 1 = 2 ; 참
    • 3 -1 = 1 ; 거짓
      • cf) ‘여름은 아름답다’ , ‘강아지는 똑똑하다’ .. 참 거짓 판단 불가
  • 비교 연산자(조건 연산자)

  • ‘==’
    • 3 == 3 ; True, 1 == 7 ; False
  • ‘!=’
    • 3 != 3 ; False, 1 != 7 ; True
  • ‘<’
    • 3 < 7 ; True, 3 < 3 ; False
  • ‘>’
    • 7 > 3 ; True
  • ‘<=’
    • 3 <= 7 ; True
  • ‘>=’
    • 7 >= 7 ; True
  • 주의 사항
    • ‘==’ 연산자 → 같음을 의미
      • cf) ‘=’ 연산자 → 변수에 값을 할당하는 대입 연산자
    • ex. 7 == 7 → True!
    • is
      • 두 변수 같음을 비교(⇒’==’)
      • 메모리 주소 비교
      a = 100
      b = 100
      a is b #True
      
      a == b #True
      
      a = 300
      b = 300
      a == b #True
      
      a is b #False
      
  • True & False의 치환
    • 이진수 처리
      • True : 1 , False : 0
    • 코드
    if 1: 
    	print("True")
    else:
    	print("False") #True
    
    → 존재하면 True, 아니면 False
(3>5)<10 #True
  • 3 > 5 → False
  • False → 0으로 치환
  • (0) < 10 → True
  • 논리 연산자
      • 하나의 if로 여러 조건 동시에 판단할 때 사용!
      • and : 여러 조건을 모두 충족해야 할 때
        • 기호 : &
          • ex. x and y , x & y
      • or : 여러 조건 중 한가지만 충족해도 될 때
        • 기호 : |
          • ex. x or y , x | yand, or, not

  • 코드
a = 8
b = 5

#1
a == 8 and b == 4 #False
a == 8 & b == 5 #True
#2
a > 7 or b > 7 #True
a < 7 | b > 7 #False
#3
not (a > 7) #False

 

  • #1 (and)
    • a는 참, b는 거짓 → True and False로 치환 ⇒ False
  • #2 (or)
    • a는 참, b는 거짓 → True or False로 치환 ⇒ True
  • #3 (not)
    • not True로 치환 ⇒ False
  • +) 논리 연산자 없이 비교 연산자를 사용할 경우
    • 코드식 표현 : age < 14 and age >= 8
    • 수학적 표현 : 8 <= age < 14
      • 같은 의미지만, 인간어에 가까운 파이썬만이 동일하게 해석 가능
      • 따라서 다른 언어는 불가능한 경우가 있고, 다른 프로그래머와의 소통을 위해 코드식 조건문 표현을 지향하자!

if-elif-else문


  • 중첩 if문
    • if-else 사이 조건 추가
  • 형식

  • 학점 부여하는 프로그램

  • 잘못된 코드

 

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

if score >= 90:
    grade = 'A'
if score >= 80:
    grade = 'B'
if score >= 70:
    grade = 'C'
if score >= 60:
    grade = 'D'
if score < 60:
    grade = 'F'

print(grade)

→ 잘못된 값 출력(D) / 올바른 값 : A

→ 코드가 한 줄씩 차례대로 실행되기 때문!

 

 

  • 올바른 코드→ elif 사용 (else + if)
score = int(input("Enter your score: "))

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

print(grade)

 

  • 실행 화면

  • → 앞 조건 해당하지 않으면 다음 조건으로 이동
  • → 조건문 True되면 if문 빠져나옴
  • → 즉, 하나의 조건만 맞으면 더이상 비교하지 않음
  • 실행할 명령문이 한 줄 → 들여쓰기 하지 않아도 됨!

조건문 실습


  • ‘어떤 종류의 학생인지 맞히는 프로그램’
    • 문제 내용
      • 조건문 활용
      • 사용자에게 태어난 연도 입력받아 어떤 종류의 학생인지 맞히는 프로그램
      • 규칙 (2020년 기준)

  • 문제 해결
#1 
print("당신이 태어난 연도를 입력하세요")
#2
birth_year = input()
#3
age = 2020 - int(birth_year) + 1

#4
if age<=26 and age>=20:
#5
	print("대학생")
#6
elif age<20 and age>=17:
#7
	print("고등학생")
#8
elif age<17 and age>=14:
#9
	print("중학생")
#10
elif age<14 and age>=8:
#11
	print("초등학생")
#12
else:
#13
	print("학생이 아닙니다")

 

  • 설명
  • #2 : 사용자의 입력을 받고 변수에 할당
  • #3 : 문자형 → 정수형, 2020년도 기준 나이 계산
  • #4 ~ #11 : age 값 → if문 elif문 수행
  • #12 ~ #13 : 모든 조건에 해당하지 않을 경우 수행

  • 최소 금액 채우기
    • 문제내용
      • 음식 배달 주문할 때, 최소 금액 이상 주문해야 배달 가능한 음식점이 있음
      • 사용자의 주문 금액을 입력받아,
        • 최소 주문 금액(15000원)을 충족한다면, 기본 배달료(3000원)를 더한 최종 결제 금액 반환하며 프로그램 종료
        • 충족하지 않는다면, “주문 금액이 부족합니다.” 반환
    • 실행 결과

  • 문제 해결

 

price = int(input('구매 금액은? ---->'))

if price <15000 :
    print('주문 금액이 부족합니다')

else:
    print('배달료 3000원이 추가됩니다')
    price += 3000                #배달료 최종 금액에 더하기
    print('최종 결제 금액은',price,'원 입니다')