티스토리 뷰
AIFFEL(대전) [Fundamental] 3-2 파이썬(Python) 제어문(if, while, for)
무엇보다_빛나는_샤트 2022. 2. 17. 12:102021.1.8 15:18
2021.01.04 (월)
3장 파이썬으로 코딩 시작하기 중 3-2 ~ 3-8 내용.
<학습 내용 키워드>
1. 제어문이란?
2. if문을 알아보자 (조건문)
3. while문을 알아보자(반복문)
4. 융합(피보나치 수)
5. for문을 알아보자(반복문)
1. 제어문이란?
코딩을 하다보면 어떤 조건에만 해당하는 데이터만 '제어'하고 싶다던가 동일한 구문을 반복하는 것을 수행하는 순간이 온다.
즉, 특정 조건에 따라 동작하는 문구 라고 생각하면 된다.
2. if문을 알아보자 (조건문)
<if, else>
간단한 예제는 '홀짝' 찾기 이다. 아래 코드를 보자.
a = 1
b = 2
# 아래 if문을 수행하면 '홀수입니다' 출력됨.
if a % 2 == 0: # % 연산자는 나머지를 의미한다. 즉, 1 % 2 의 의미는 1 나누기 2이므로 나머지는 1이다.
print('짝수입니다')
else:
print('홀수입니다')
# 아래 if문을 수행하면 '짝수입니다' 출력됨.
if b % 2 == 0: # % 연산자는 나머지를 의미한다. 즉, 2 % 2 의 의미는 2 나누기 2이므로 나머지는 0이다.
print('짝수입니다')
else:
print('홀수입니다')
코드를 풀어쓰면 아래와 같이 설명할 수 있다.
만약(if) a를 2로 나눈 나머지가 0이라면 '짝수입니다'를 출력하고 그렇지 않다면(else) '홀수입니다'를 출력해라.
a는 1이므로 1 나누기 2의 나머지는 1이므로 '홀수입니다' 출력해라.
<elif>
다른 예제는 세 가지 이상의 조건을 제어하고 싶을 때 사용할 수 있는 'elif'이다.
어떤 수가 짝수(2의 배수)와 3의 배수를 알고 싶다면 아래와 같은 형식으로 작성하면 된다.
a = 99
b = 24
# 아래 코드 실행 시 '3의 배수입니다' 출력
if a % 2 == 0:
print('짝수입니다')
elif a % 3 == 0: # a를 3으로 나누면 나머지가 0이므로 이 제어문 동작!
print('3의 배수입니다')
else:
print('짝수도 아니고 3의 배수도 아닙니다')
# 아래 코드 실행 시 '짝수입니다' 출력
if b % 2 == 0: # b를 2로 나누면 나머지가 0이므로 이 제어문 동작!
print('짝수입니다')
elif a % 3 == 0:
print('3의 배수입니다')
else:
print('짝수도 아니고 3의 배수도 아닙니다')
3. while문을 알아보자(반복문)
while의 뜻은 무엇인가? 바로 '~~하는 동안'이라는 의미이다.
즉, while문은 조건이 참일 때 하위 기능들이 동작한다는 의미이다.
n = 1
while n <= 10:
print(n)
n = n+1 # n += 1 와 같은 의미이다.
# 실행결과는 아래와 같다.
1
2
3
4
5
6
7
8
9
10
위의 코드를 말로 풀어쓰면 다음과 같다.
n이 10 이하라면 아래에 있는 문장들을 실행할 것
그리고 마지막 줄에서 n이 하나씩 증가하며 결국 n이 10일때 출력을 끝으로 11이 되면서 while문 동작이 종료된다.
<무한루프 - 조심!!>
n = 1
while n<= 10
print(n)
# 실행결과는 다음과 같다. (무한루프에 빠져 사람이 개입해 멈추지 않으면 계속 동작한다.)
1
1
1
1
만약 마지막 줄에 있던 n = n+1을 없앤다면 while문은 영원히 반복동작하여 1을 계속 출력할 것이다.
while문을 사용할 때는 반복문이 중단되는 조건을 잘 설정해주자
4. 융합(피보나치 수)
지금까지 if, while문을 학습했는데 이를 융합해서 가장 잘 표현할 수 있는 것이 바로 '피보나치 수'이다.
※ 피보나치 수: n자리의 수는 n-1자리의 수와 n-2자리의 수의 합으로 이루어졌다. (단, 첫 번째와 두 번째 숫자는 1이다.)
즉, 3번째 숫자는 = 1(3-1번째 숫자) + 1(3-2번째 숫자)
def fibonacci(n):
if n <= 2:
return 1
else:
return fibonacci(n-2) + fibonacci(n-1)
n = 1
while n <= 20:
print(fibonacci(n))
n = n + 1
# 실행 결과
1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
위와 같이 fibonacci(n)라는 함수를 정의했는데 하나하나 뜯어보면
먼저 n=1로 설정되었다.
while n <= 20 의 조건이 True이므로 while문이 실행된다.
fibonacci(n)이 출력된다.
if n <= 2 라는 조건이 True이므로 실행되어 1을 반환하게 되고 그 값을 출력한다. 그리고 n = 2 로 변하게 된다.
n=2로 설정된 후 while문은 여전히 실행된다. 그리고 fibonacci(n)도 실행된다.
if n <= 2라는 조건이 True이므로 실행되어 1을 반환하게 되고 그 값을 출력한다. 그리고 n = 3 로 변하게 된다.
n=3로 설정된 후 while문은 여전히 실행된다. (20 이하이기 때문에)
fibonacci(n)이 실행되면 아까 2번의 경우와는 다르다.
if n<=2가 False이기 때문에 실행이 되지 않고 else문이 실행된다.
fibonacci(3-2) + fibonacci(3-1) = 1 + 1 = 2 를 반환하고 그 값을 출력한다.
그리고 n=4 로 변하게 된다.
이렇게 n이 하나씩 증가하면서 fibonacci 수를 n이 20이 될 때까지 계속 출력해주게 된다.
5. for문을 알아보자(반복문)
for문도 while문과 마찬가지로 반복문인데 두 가지 차이점은 아래와 같다.
while 문: 어떠한 원하는 조건을 달성하에 여러 가지 명령어를 실행하는 것
for문: 반복 횟수를 알고 있을 때 그 횟수만큼 여러 가지 명령어를 실행하는 것
즉, 차이점은 반복 횟수를 아는지(for) 모르는 지(while)가 중요하다.
for i in 'shate':
print(i)
# 실행결과는 아래와 같다.
's'
'h'
'a'
't'
'e'
위 코드는 'shate'라는 문자열을 하나하나 가져와서 출력한 결과이다.
for 문의 형식은 for a in A 형식으로 적으면 동작한다.
number = [1,2,3,4,5]
for num in number:
print(num)
# 실행 결과
1
2
3
4
5
리스트로 작성된 변수를 가져와 for문으로 인자를 하나씩 출력해서 보여줄 수 있다.
<for문의 활용>
for i in 'Hello':
print('안녕하세요')
# 실행 결과
안녕하세요
안녕하세요
안녕하세요
안녕하세요
안녕하세요
for 문은 정해진 횟수 동안 반복하는 것이므로 'Hello'라는 5개로 이루어진 문자열을 이용한다면 print{'안녕하세요')를 5번 출력할 수 있다. 즉, i라는 인자를 사용할 수도 있지만 사용하지 않고 단순히 반복횟수만을 위해 사용할 수 있다.
<for, if 융합>
number = [1,2,3,4,5,6,7,8,9]
for num in number:
if num % 2 == 0:
print('짝수입니다')
elif num % 3 == 0:
print('3의 배수입니다')
else:
print('짝수도 아니고 3의 배수도 아닌 수입니다')
# 실행 결과
짝수도 아니고 3의 배수도 아닌 수입니다
짝수입니다
3의 배수입니다
짝수입니다
짝수도 아니고 3의 배수도 아닌 수입니다
짝수입니다
짝수도 아니고 3의 배수도 아닌 수입니다
짝수입니다
3의 배수입니다
for, if를 융합해 숫자들의 리스트를 이용해 각 조건에 맞게 내용을 출력할 수 있다.
다양한 조건문을 활용한다면 숫자 분류기도 생성 가능할 수도...?
'교육 > AIFFEL(대전)1기' 카테고리의 다른 글
AIFFEL(대전) [AIFFEL LIFE] 시작 (2) | 2022.02.20 |
---|---|
AIFFEL(대전) [Fundamental] 3-3 파이썬(Python) 자료형 (0) | 2022.02.17 |
AIFFEL(대전) [Fundamental] 3-1 파이썬(Python) 변수와 함수 그리고 반환(return) (0) | 2022.02.17 |
[E08] CSR Matrix (0) | 2022.02.17 |
[E08] Explicit Dataset(명시적) VS Implicit Dataset(암묵적) (0) | 2022.02.17 |
- Total
- Today
- Yesterday
- 서빙로봇
- 인공지능 교육
- 아이펠
- SLAM공부
- AIFFEL인공지능과정
- 도전
- 광주인공지능사관학교
- 인공지능교육
- 실내자율주행
- 인공지능
- ros
- 광주AI
- 자율주행기술
- Python
- IT
- 해커톤
- 자율주행로봇
- 배달로봇
- 멋쟁이사자처럼
- 멘탈관리
- Slam
- 모두의 연구소
- SLAM강의
- 양정연SLAM
- 광주
- AIFFEL교육
- AIFFEL
- AIFFEL후기
- 대전 인공지능
- 모두의연구소
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |