데이터 과학을 위한 파이썬 프로그래밍 교재를 사용하여 작성한 강의자료입니다.
제어구조
프로그램의 처리 흐름을 제어하는 방법
- 순차형 (sequence) : 명령어들이 순차적으로 실행되는 구조
- 선택형 (selection) : 두 개중에서 하나의 명령어를 선택하여 실행하는 구조
- 반복형 (iteration) : 동일한 명령이 반복되면서 실행되는 구조
💡 선택 가능한 모든 대안을 확인하고 대안을 선택하는 판단 기준이 무엇인지 확인것이 중요
조건
어떤 판단 기준을 예/아니오로 대답할 수 있는 질문 형태로 표현한 것
- ‘날씨가 흐린가?’ (조건식)
- → 예 (조건식의 결과) → 우산을 가져간다. (선택 가능한 대안)
- → 아니오 (조건식의 결과) → 우산을 가져가지 않는다. (선택 가능한 대안)
조건문
조건에 따라 특정 동작을 하도록 하는 프로그래밍 명령어
- 사용자가 20세 이하면 VOD를 재생하지 마라
- 스마트폰 잠금 해제 패턴이 5회 틀리면 20초 동안 대기 상태로 만들어라
조건문을 구성하기 위해 조건을 나타내는 기준과 실행해야 할 명령이 필요하다.
조건의 기준 : ‘스마트폰 잠금 해제 패턴이 5회 틀리면’
실행해야 할 명령어 : ‘20초 동안 대기 상태’
조건문은 반드시 참과 거짓으로 구분
if 조건식
조건식이 참이면 문장을 실행하라는 제어구조
나이가 20세 이상이면 투표를 할 수 있습니다
-> 조건 -> 동작
>>> age = 25
>>> if age >= 20:
print("투표를 할 수 있습니다.")
투표를 할 수 있습니다.
if 문 사용 주의사항
- if 뒤에는 참과 거짓을 판단할 수 있는 조건문이 와야 함
- 조건문이 끝나면 반드시 콜론(:)을 붙여야 함
- 들여쓰기를 통해 블럭을 구분, 공백 4개나 Tab 키 사용
들여쓰기 개수를 틀려서 실행이 안됨
>>> score = int(input("성적을 입력하시오 : "))
성적을 입력하시오 : 60
>>> if score >= 90:
print("합격")
print("장학금 받을 수 있어요")
SyntaxError: unexpected indent
블록이 서로 다른 경우, 들여쓰기 개수를 틀려도 동작은 하지만 권장 하지 않음
>>> if score >= 90:
print("합격")
else:
print("불합격")
불합격
if-else 문
조건식이 참이면 문장 1을 실행, 거짓이면 문장 2를 실행하라는 제어구조
- if 조건이 거짓일 경우 else 문이 실행
- else 문은 생략해도 상관없지만 조건에 해당하지 않는 경우 처리해야 할 명령이 있다면 else 문을 작성하여 else 문을 작성할 수 있음
>>> if score >= 80:
print("합격입니다.") #조건식의 결과가 True인 경우
>>> else:
print("아쉽습니다. 다시 도전해 주세요.") #조건식의 결과가 False인 경우
조건의 판단
조건문 코드의 판단 방법은 참 또는 거짓을 구분하는 방법과 같음
- 비교 연산자
비교연산자 비교 상태 설명
x < y | ~보다 작음 | x가 y보다 작은지 검사 |
x > y | ~보다 큼 | x가 y보다 큰지 검사 |
x == y | 같음 | x와 y의 값이 같은지 검사 |
x is y | 같음(메모리 주소) | x와 y의 메모리 주소가 같은지 검사 |
x ! = y | 같지 않음 | x와 y의 값이 같지 않은지 검사 |
x is not y | 같지 않음(메모리 주소) | x와 y의 메모리 주소가 같지 않은지 검사 |
x > = y | 크거나 같음 | x가 y보다 크거나 같은지 검사 |
x < = y | 작거나 같음 | x가 y보다 작거나 같은지 검사 |
== 연산자
== : 같음을 의미
= : 할당의 의미
>>> 7 == 7
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 , 존재하지 않으면 False
>>> (3>5) < 10
논리 연산자
연산자 의미 설명 사용 예
and(논리곱) | ~이고, 그리고 | 둘 다 참이어야 참 | (a>100) and (a<200), A & B |
or(논리합) | ~이거나, 또는 | 둘 중 하나만 참이어도 참 | (a==100) or (a==200), A |
not(논리부정) | ~아니다, 부정 | 참이면 거짓, 거짓이면 참 | not(a<100) |
>>> a = 99
>>> (a>100) and (a<200)
False
>>> (a>100) or (a<200)
True
>>> not(a==100)
True
- 논리연산자가 없다면 …?
# 논리 연산자를 사용한 경우
>>> a = 99
>>> (a>100) and (a<200)
False
# 논리연산자 없이 비교연산자만 사용한 경우
>>> a = 99
>>> if a<200:
if a>100:
print("True")
else:
print("False")
False
if-else 문을 사용하여 코드가 훨씬 길어지게 되고 가독성이 떨어진다.
if-elif-else 문
점수(score) 학점(grade)
98 | |
37 | |
16 | |
86 | |
71 | |
63 |
- 코드가 한 줄씩 차례대로 실행되어 어떤 값을 입력하더라도 ‘D’나 ‘F’로 나온다.
- grade 변수에 계속 변경되어 할당
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, "학점입니다.")
Enter your score:98
D 학점입니다.
if-elif-else
elif : else if 의 줄임말로 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 score < 60:
grade ='F' # 모든 조건에 만족하지 못할 경우 F
print(grade, "학점입니다.")
논리 연산자 없이 비교연산자를 사용한 경우
>>> 1 <= 2 < 10
True
>>> 1 <= 100 < 10
False
중첩 if 문
>>> age = 11
>>> height = 160
>>> if age >= 10: #참
if height >= 150: #참
print("놀이기구를 탈 수 있습니다.")
else:
print("놀이기구를 탈 수 없습니다.")
>>> else:
print("놀이기구를 탈 수 없습니다.")
놀이기구를 탈 수 있습니다.
- age 와 height이 첫번째 if문인 age≥ 10 조건과 두번째 if문인 height ≥ 150 조건을 모두 만족하여print(”놀이기구를 탈 수 있습니다.”) 가 실행된다.
>>> height = 140
>>> if age >= 10:
if height >= 150: #거짓
print("놀이기구를 탈 수 있습니다.")
else:
print("놀이기구를 탈 수 없습니다.")
>>> else:
print("놀이기구를 탈 수 없습니다.")
놀이기구를 탈 수 없습니다.
- height 변수가 140으로 다시 할당되고 age 변수는 11 그대로 이다. 이때 age >= 10 조건은 만족하나 height ≥ 150 조건을 만족하지 못하여 두번째 if문의 else문이 실행되어 print(”놀이기구를 탈 수 없습니다.”) 가 실행된다.
>>> age = 9
>>> if age >= 10: #거짓
if height >= 150:
print("놀이기구를 탈 수 있습니다.")
else:
print("놀이기구를 탈 수 없습니다.")
>>> else:
print("놀이기구를 탈 수 없습니다.")
놀이기구를 탈 수 없습니다.
- age 변수가 9로 다시 할당되었고 height 변수는 위에서 140 이었으므로 age >= 10 조건과 height >= 150 조건을 둘 다 만족하지 못하여 else문인 print(”놀이기구를 탈 수 없습니다.”) 를 실행한다.
실습
연산자와 if-else 를 이용한 실습문제
🎢 놀이공원의 어린이용 놀이기구는 키는 155cm 이하, 몸무게는 50kg 이하의 제한 조건이 있다고 했을때 a의 키는 165cm, 몸무게 60kg 이라면 어린이용 놀이기구를 탈 수 있는지 확인하는 프로그램
- 정답
- a의 키와 몸무게를 입력받기 위해서 height 변수와 weight 변수를 만들어 input으로 사용자에게 입력받는다.
- if 문을 사용해서 조건을 확인한 뒤 탑승 가능과 불가능을 판단한다.
- height <= 155 조건과 weight <= 50 조건을 동시에 만족해야 하므로 and 연산자를 이용해 조건식을 작성해 준다.
- 조건을 모두 만족하면 “탑승 가능”을 출력하고 하나의 조건이라도 만족하지 못한다면 “탑승 불가능” 문장을 출력하도록 한다.
height = int(input("키: "))
weight = int(input("몸무게: "))
if height <= 155 and weight <= 50:
print("탑승 가능")
else:
print("탑승 불가능")
if-elif-else 실습 예제
물건을 주문할때의 최저 구매금액이 조건으로 붙는 경우
- 최저 구매금액이 2만원
- 2만원 이상 5만원 미만이면 구매금액에 배송비 2500원 추가
- 5만원 이상이면 무료배송 제공
- 구매 금액을 입력받아 금액이 2만원 미만이면 ‘주문금액이 부족합니다’를 출력
- 실제 결제 금액을 알려 주고 프로그램을 종료
- 정답
- 사용자에게 주문금액을 입력받을 수 있도록 input 함수를 사용하고 정수형으로 전환하여 금액을 비교할 수 있도록 한다.
- 주어진 조건에 맞게 2만원 미만의 금액은 주문금액이 부족하다는 문장을 출력하고 5만원 이하는 배송비 2500원이 추가된다는 문장과 함께 사용자가 입력한 구매금액에 2500을 더하여 다시 할당해 준다.
- 이외의 조건은 자동으로 주문금액이 5만원 이상인 경우 이므로 else 문을 사용해 무료배송의 조건을 만족해 무료배송 된다는 문장을 출력할 수 있도록 한다.
- 마지막으로 print문을 이용하여 최종금액 price 를 출력한다
price = int(input("구매 금액은 ?: "))
if price < 20000:
print("주문 금액이 부족합니다")
elif price < 50000:
print("배송비 2500원이 추가됩니다.")
price += 2500
else:
print("무료배송됩니다.")
print("최종금액은", price, "원입니다.")
어떤 종류의 학생인지 맞히기
사용자가 태어난 연도를 입력하면 어떤 종류의 학생인지 맞히는 프로그램
- 나이는 (2023-태어난연도+1)로 계산
- 26세 이하 20세 이상이면 ‘대학생’
- 20세 미만 17세 이상이면 ‘고등학생’
- 17세 미만 14세 이상이면 ‘중학생’
- 14세 미만 8세 이상이면 ‘초등학생’
- 그 외의 경우는 ‘학생이 아닙니다.’ 출력
- 실행 결과
당신이 태어난 연도를 입력하세요. #입력대기
1982 #자신이 태어난 연도 입력
학생이 아닙니다. #어떤 종류의 학생인지 출력
정답
print("당신이 태어난 연도를 입력하세요")
birth_year = input()
age = 2023-int(birth_year)+1
if age <= 26 and age >= 20:
print("대학생")
elif age < 20 and age >= 17:
print("고등학생")
elif age < 17 and age >= 14:
print("중학생")
elif age < 14 and age >= 8:
print("초등학생")
else:
print("학생이 아닙니다.")
- print 문을 이용하여 사용자에게 태어난 연도를 입력할것을 안내한다.
- birth_year 변수를 이용하여 태어난 연도를 할당받고 age 변수를 이용하여 사용자의 나이를 계산하는 식을 작성한다.
- if-elif-else 문을 사용해서 age 변수가 속하는 특정나이에 해당하는 학생을 출력한다.
if-elif-else 조건식과 중첩 if 문 실습
나이를 입력 받아 20살이 넘으면 “당신은 성인입니다.”를 출력하고, 10살 이상 20살 미만은 “당신은 청소년입니다”를 출력하고, 10살 미만은 “당신은 어린이 입니다”를 출력하는 프로그램을 if-elif-else 조건식과 중첩 if문으로 작성해보기
>>> age = int(input("나이 : "))
>>> if age >= 20:
print("당신은 성인입니다.")
>>> elif age >= 10:
print("당신은 청소년입니다.")
>>> else:
print("당신은 어린이입니다.")
- age 변수를 통해 사용자에게 input함수를 사용하여 나이를 입력 받고 숫자의 비교를 위해 정수형으로 변환하여 준다.
- if - elif - else 문을 사용하여 사용자의 나이가 20세 이상이면 “당신은 성인입니다.” 문장을 출력하고 10세 이상인 경우는 “당신은 청소년 입니다.”를 출력한다. 두 조건을 다 만족하지 않으면 자동으로 10세 이하의 나이이므로 “당신은 어린이 입니다.”를 출력한다.
>>> age = int(input("나이 : "))
>>> if age >= 20:
print("당신은 성인입니다.")
>>> else:
>>> if age >= 10:
print("당신은 청소년입니다.")
else:
print("당신은 어린이입니다.")
- age 변수를 통해 사용자에게 input함수를 사용하여 나이를 입력 받고 숫자의 비교를 위해 정수형으로 변환하여 준다.
- if 문을 사용하여 20세 이상인지를 판단하고 참이면 “당신은 성인입니다.”를 출력하고 거짓이면 else 문을 실행한다.
- 이때 else 문은 중첩 if문으로 나이가 10세 이상 조건이 참이면 “당신은 청소년입니다.”를 출력하고 거짓이면 else문의 “당신은 어린이입니다.”를 출력한다.
'스터디 > 파이썬 스터디 강의자료' 카테고리의 다른 글
[4팀/이제은] 3차시 파이썬 스터디 - 조건문 (0) | 2023.03.23 |
---|---|
[4팀/김민혜] 2차시 파이썬 스터디 - 자료형 (1) | 2023.03.23 |
[1팀/지다인] 3차시 파이썬 스터디- 조건문 (0) | 2023.03.22 |
[1팀/허서원] 3차시 파이썬 스터디 - 조건문 (0) | 2023.03.22 |
[2팀/김가림, 최다예] 3차시 파이썬 스터디 - 조건문 (0) | 2023.03.22 |