반복문은 말 그대로 똑같은 코드를 여러번 써야하는 수고를 덜어주는 문법이다.
1. for문
for i in range(5):
print("Hello world!")
파이썬은 들여쓰기로 문법을 구분하기 때문에
반복하는 줄들(for문 안에 넣을 코드)은 for문을 만든 줄에 있는 들여쓰기 칸 수 보다 많아야하고,
같은 for문 아래에 있는 줄들의 들여쓰기 칸 수가 같아야한다.
range() 자료형: 정수를 순서대로 반환할 수 있는 자료형, iterable자료형으로 iterable자료형은 객체를 하나씩 반환하는 기능을 갖고 있는 자료형을 뜻한다.
range(n): 0~n-1까지 정수를 하나씩 반환하는 기능을 갖고 있다.
range(start,end): start부터 end-1까지 정수를 반환
range(start,end,step): start부터 end-1까지 step만큼 차이내며 정수를 반환
**range함수의 객체 반환 범위가 [start,end)임에 주의하자
# range 호출 방법 예시
# 직접 출력하면서 반복되는 양상을 확인해보자
for i in range(3, 6):
print(i)
for i in range(1, 10, 2):
print(i)
for i in range(11, 2, -2):
print(i)
for문에서 꼭 rang()함수를 사용할 필요가 없다. in오른쪽에 있는 객체는 아무 iterable이면 된다. (문자열도 iterable자료형!)
# 문자열도 iterable 자료형이다
for char in "Hello":
print(char)
2. while문
어떤 조건이 계속 충족되고 있을때 코드를 반복한다.
while문도 마찬가지로 for문과 동일하게 들여쓰기에 주의해야 한다.
while문에서 condition의 진리값이 True면 반복한 코드를 실행, False면 while문에서 탈출한다.
i = 5
while i > 0: ## i가 0보다 큰 경우에 아래의 코드를 반복한다.
print("Hello!")
i -= 1
반복문은 코드를 작성하는데 있어 너무 중요하기 때문에 많은 예제를 통해 숨쉬듯이 다룰수 있어야 한다.
위에서 소개한 예제는 아주 간단한 반복이므로 여기서 그치지 않고 많은 연습이 필요하다
백준에 있는 대부분의 문제에는 반복문이 사용되기 때문에 단계별로 풀어보기를 통해 연습하기 좋다.
몇가지 예제(답은 마지막에 정리)
1. 문자열을 입력받은 후 거꾸로된 문자열을 출력하는 코드를 작성하시오.
입력예시
hello world!
출력예시
!dlrow olleh
2. 반복문을 활용하여 1² + 2² + 3² + 4² + 5² + 6² + ... + x² < 1000 을 만족하는 자연수 x의 최댓값을 구하시오.
(추가적인 입력이 필요없고 만족하는 x의 최댓값을 출력하면 된다)
3. nn단을 출력하는 반복문 코드를 작성하시오.
(nn단이란 구구단에서 1x1에서 nxn까지만 나타낸 것이다.)
입력예시
4
출력예시
1 X 1 = 1
1 X 2 = 2
1 X 3 = 3
1 X 4 = 4
2 X 1 = 2
2 X 2 = 4
2 X 3 = 6
2 X 4 = 8
3 X 1 = 3
3 X 2 = 6
3 X 3 = 9
3 X 4 = 12
4 X 1 = 4
4 X 2 = 8
4 X 3 = 12
4 X 4 = 16
4. input함수로 자연수를 받은 다음에 그 자연수에 해당되는 크기의 삼각형을 출력하시오.
(패턴을 잘 파악해서 반복문을 활용해야하는 문제)
입력예시
5
출력예시
*
* *
* *
* *
*********
예제 답안 예시(답안 예시일뿐 문제에서 요구하는 답을 출력할 수 있으면 된다)
## 1
string = input("Give me a string: ")
for i in range(len(string)-1,-1,-1):
print(string[i], end = "")
## 2
result = 0
i=0
while(result < 1000):
i += 1
result += (i*i)
print(i-1)
## 3
n = int(input("What is n? "))
for i in range(1,n+1):
for j in range(1,n+1):
print(f"{i} X {j} = {i*j}")
## 4
n = int(input("What is n? "))
for i in range(n-1):
for j in range(n-1-i):
print(" ", end = "")
for j in range(2*i+1):
if j == 0 or j == 2*i:
print("*", end = "")
else:
print(" ", end = "")
print()
for i in range(2*n-1):
print("*", end = "")
'💂군대 > KAIST ICT Academy' 카테고리의 다른 글
MO6 - 함수 매개변수와 반환값 (0) | 2024.09.04 |
---|---|
MO5 - 함수의 정의와 호출 (0) | 2024.08.21 |
MO4 - 조건문 (0) | 2024.08.07 |
MO2 - 자료형과 변수 (0) | 2024.07.30 |
MO1 - 파이썬 프로그래밍 개요 (0) | 2024.07.28 |