2023. 2. 23. 15:01ㆍ독서
안녕하세요!
<코딩 자율학습 나도코딩의 파이썬 입문> 멘토를 담당하게 된 이안입니다.
오늘은 6장 '제어문'을 학습할 거예요!
vscode에서 ch06.py 파일을 생성하고 시작해 주세요.
오늘 공부할 내용은 다음과 같습니다.
🧐 공부할 내용(p.123~p.151)
- 조건에 따라 분기하기: 조건문
- 같은 일 반복하기: 반복문
1. 조건에 따라 분기하기: 조건문
드디어 조건문을 배웁니다.
조건문에는 총 3가지 경우가 있습니다.
* 조건이 하나일 때: if문
* 조건이 여러 개일 때: elif문
* 모든 조건에 맞지 않을 때: else문
여기서 elif는 else + if의 준말입니다.
이 3가지 분기가 합쳐지면, p.165와 같은 도식이 도식이 됩니다.
한번 같이 해보죠.
학생의 점수가 95점 이상이면 A+, 90점 이상이면 A, 85점 이상이면 B+, 80점 이상이면 B, 75점 이상이면 C+, 70점 이상이면 C
나머지는 F를 주는 학점 프로그램을 작성해 보세요.
grade = 80
if grade >= 95:
print("A+")
elif grade >= 90:
print("A")
elif grade >= 85:
print("B+")
elif grade >= 80:
print("B")
elif grade >= 75:
print("C+")
elif grade >= 70:
print("C")
else:
print("F")
이때 궁금증이 생기실 수 있습니다.
학생 점수가 80점이면, elif grade < 85 and grade >= 80: 으로 작성되어야 하는 건 아닌가 하고요.
하지만 if문은 위에서 순서대로 이미 걸러져 내려온 것을 확인합니다.
즉, 이미 첫 번째 분기문에서 95점 미만인 것이 확인 됐고, 90점 미만인 것이 확인 됐으며, 85점 미만인 것이 확인되었죠.
그렇기 때문에 elif grade >= 80 만 작성해도 올바르게 동작하는 것입니다.
당연히 분기문은 해당하는 조건이 있다면 동작하고 분기문을 벗어납니다.
즉, 아래에 있는 C+, C, F를 출력하지 않는다는 것이죠.
🥕멘토 TIP
파이썬의 경우 들여 쓰기가 정말 중요합니다.
vscode를 사용하시면 자동으로 들여 쓰기가 되지만, 만약 실수로 백스페이스(지우기) 버튼을 눌러서 들여 쓰기가 제대로 되어 있지 않다면
프로그램은 올바르게 동작하지 않습니다.
주로 들여 쓰기는 탭(Tab)을 많이 사용하니 참고 바랍니다.
p.162~163에 있는 Note부분은 중요한 사실을 이야기하고 있습니다.
들여 쓰기에 따라서 문장이 실행될 수도 있고, 아닐 수도 있는 것이죠.
꼭 숙지해 주세요!
그럼 이제 값을 입력받아 볼까요?
input()으로 값 입력받아 비교하기
input() 함수에 익숙해지기 위해서 여러 프로그램을 만들어 봅시다.
두 개의 수를 입력받아서 더하는 프로그램을 만들어 봅시다.
a = input("숫자를 입력해주세요: ")
b = input("숫자를 입력해주세요: ")
print(a+b)
input() 함수 하나는 한 문장을 입력받기 때문에 입력을 한 후 엔터를 입력하셔야 합니다.
1과 2를 넣어볼까요?
어때요? 3이 잘 나왔나요?
12가 나왔죠?
그 이유는 바로 input()은 항상 문자열 형태로 변수에 저장하기 때문입니다.
즉, a에는 숫자 1이 아니라 "1"이, b에는 숫자 2가 아니라 "2"가 저장되었습니다.
그렇기 때문에 a+b에서는 숫자가 더해진 것이 아니라 문자열이 합쳐진 것이죠.
그럼 숫자를 입력받으려면 어떻게 해야 할까요?
앞선 시간에 배웠던 형변환을 하면 됩니다.
이렇게요.
a = int(input("숫자를 입력해주세요: "))
b = int(input("숫자를 입력해주세요: "))
print(a+b)
간단하죠?
참고로 input()에 아무런 값도 넣지 않으면 그냥 문자열 입력만 받을 수 있습니다.
a = int(input())
b = int(input())
print(a+b)
이렇게 해도 문제없이 동작합니다.
그럼 앞에 성적처리 프로그램을 이용해서 점수를 입력받아 볼까요?
grade = int(input("성적을 입력해주세요: "))
if grade >= 95:
print("A+")
elif grade >= 90:
print("A")
elif grade >= 85:
print("B+")
elif grade >= 80:
print("B")
elif grade >= 75:
print("C+")
elif grade >= 70:
print("C")
else:
print("F")
재미있지 않나요?
p.167 예제를 따라서 코드를 작성하면서 분기문과 논리 연산자 그리고 비교 연산자를 같이 익혀주세요.
🥕멘토 TIP
여러분은 방금 막 입력을 배웠습니다.
입력을 배우셨기 때문에 문제를 푸실 수 있는 수준이 된 거예요.
10926번: ??!
준하는 사이트에 회원가입을 하다가 joonas라는 아이디가 이미 존재하는 것을 보고 놀랐다. 준하는 놀람을 ??!로 표현한다. 준하가 가입하려고 하는 사이트에 이미 존재하는 아이디가 주어졌을 때
www.acmicpc.net
위 사이트는 <백준 온라인 저지>라고 하는 문제 모음 사이트입니다.
가입하시고 문제를 한번 풀어보세요.
풀어보시고 아래의 해답을 봐주세요.
name = input()
print(name+"??!")
정말 간단하죠?
2. 같은 일 반복하기: 반복문
책에서 두 가지 반복문을 소개합니다.
* 범위 안에서 반복하는 for문
* 조건을 만족할 동안 반복하는 while문
먼저 for문을 살펴볼게요.
1) for문
범위 안에서 계속 반복하는 for문은 반복 대상이 있고, 그 대상의 내용을 반복합니다.
책에 있는 내용을 읽어보시면 쉽게 이해가 가실 텐데요, 헷갈리실 만한 부분은 '반복 대상을 순회'한다는 것입니다.
그러니까 딕셔너리, 리스트, 세트 등 다양하게 사용 가능하죠.
아래의 예제를 볼게요.
# 딕셔너리 순회
dic = {"apple": "사과", "watermelon": "수박", "tomato": "토마토"}
for i in dic.keys():
print(i)
# 리스트 순회
li = ['10000', '20000', '30000']
for i in li:
print(i)
# 세트 순회
s = {"삼성", "애플", "현대"}
for i in s:
print(i)
for i in range(10):
print("대기번호:",i)
이렇게 다양하게 사용가능하죠.
range는 살짝 헷갈리실 수 있는데요,
for i in range(1, 11, 2):
print(i)
위와 같은 코드가 있다면 이 코드는
1부터 10까지 2만큼의 간격을 두고 출력하는 코드입니다.
그러니까 1,3,5,7,9 즉 홀수만 print 하는 반복문입니다.
for문 사용에서 주의할 부분은 범위 숫자 끝은 포함되지 않는다는 것입니다.
for i in range(1, 10):
print(i)
이때, 10은 출력숫자에 포함되지 않습니다.
2) while문
while문은 조건을 만족할 때까지 반복하는 반복문입니다.
p.176에 있는 예제가 정말 잘 들어맞죠.
같이 한번 입력해 볼까요?
customer = "토르"
index = 5
while index >= 1:
print(f"{customer} 님, 커피가 준비됐습니다.")
index -= 1
print(f"{index}번 남았어요.")
if index == 0:
print("커피를 폐기 처분합니다.")
여기서 앞서 배운 입력을 활용해 볼 수도 있겠죠?
customer = input()
index = int(input())
while index >= 1:
print(f"{customer} 님, 커피가 준비됐습니다.")
index -= 1
print(f"{index}번 남았어요.")
if index == 0:
print("커피를 폐기 처분합니다.")
그럼 다음으로 흐름제어 예시를 볼게요.
primeNumber = int(input())
flag = True
for i in range(2, primeNumber):
if primeNumber % i == 0:
flag = False
break
if flag == True:
print("소수 입니다.")
else:
print("소수가 아닙니다.")
숫자를 입력받고 소수인지 판별하는 프로그램입니다.
소수는 자기 자신과 1만을 약수로 가지는 숫자입니다.
2, 3, 5, 7, 11 등이 있죠.
입력받은 수가 소수가 아니라면, 즉 2와 primeNumber - 1 사이의 숫자로 나누어 떨어지면
flag는 False로 변경되고, break 문이 실행되면서 for 문이 끝나게 됩니다.
예를 들어 15가 입력이 되었다고 생각해 봅시다.
i는 처음 2가 될 것이고, 15는 2로 나누어 떨어지지 않습니다.
다음 i는 3이 될 것이고, 15는 3으로 나누어 떨어집니다.
이때 flag는 False가 되고, break문이 실행되는 것입니다.
즉, i가 4 이상으로 커지지 않는다는 것이죠.
이처럼 실행되는 횟수를 줄이는 효과도 있답니다.
break는 반복문을 중단시키는 역할, continue는 continue이하를 실행시키지 않고 다시 반복문을 실행.
이것만 기억하시면 되겠습니다.
for 문 한 줄로 작성하기
for 문을 한 줄로 작성하는 이런 코드를 "pythonic 한 코드"라고 말하곤 합니다.
파이썬에서 주로 볼 수 있는 코드라는 것이죠.
oddNumber = [i for i in range(1, 10, 2)]
print(oddNumber)
이렇게 간편하게 사용이 가능합니다.
이때 주의할 점은 for 문에 있는 변수와 앞에 사용하는 변수가 같아야 한다는 것입니다.
oddNumber = [x for i in range(1, 10, 2)]
print(oddNumber)
이러한 코드는 동작하지 않습니다!!
다만 이런 코드는 가능합니다.
x = 100
oddNumber = [x+i for i in range(1, 10, 2)]
print(oddNumber)
외부에 변수가 선언되어 있고, 이 변수를 활용하는 경우는 가능합니다.
이번 장에서는 파이썬의 제어문에 대해서 알아봤어요.
오늘 배운 내용을 1분 퀴즈와 복습을 통해서 다시 한번 익혀주세요!
제가 공부한 내용을 보고 궁금한 점이 있으면 댓글 남겨주세요!
확인 후 답변해 드리겠습니다.
그럼 다음 7장에서 만나요!
✅ 정리
* 조건문
* if, elif, else로 이어지는 조건문
* 반복문
* for를 활용한 반복문
* while을 이용한 반복문
* break를 이용한 탈출, continue를 이용한 지속
'독서' 카테고리의 다른 글
(나도코딩의 파이썬 입문) 7장. 함수(p.202 ~ p.220) (0) | 2023.03.03 |
---|---|
(나도코딩의 파이썬 입문) 7장. 함수(p.191 ~ p.201) (0) | 2023.02.28 |
(나도코딩의 파이썬 입문) 5장. 자료구조(p.123 ~ p.151) (0) | 2023.02.23 |
(나도코딩의 파이썬 입문) 4장. 문자열 다루기(p.93 ~ p.116) (0) | 2023.02.21 |
(나도코딩의 파이썬 입문) 3장. 연산자(p.69 ~ p.89) (0) | 2023.02.21 |