
코드를 n 번 반복하고 싶다면 for문을 사용하면 된다.
여기서 주의할 점은 들여쓰기(indentation)
반복하는 줄들(for문 안에 넣을 코드)은 for문 만든 줄에 있는 들여쓰기 칸 수보다 많아야 하고, 같은 for문 아래에 있는 줄들의 들여쓰기 칸 수가 같아야 한다.
for i in range(5)
print("Hello world!")
range 자료형은 정수를 순서대로 반환할 수 있는 자료형이다.
range(n)으로 만든 객체는 0부터 n-1까지의 정수를 하나씩 반환하는 기능을 갖고 있다.
객체를 하나씩 반환하는 기능을 갖고 있는 자료형을 iterable 자료형이라고 부른다.
range()를 여러 방법으로 호출 할 수 있다.
range(1, 3)
>>> 1, 2
range(1, 6, 2)
>>> 1, 3, 5
for i in range(1, 0)
range(10, 8, -1)
>>> 10, 9
반복문 안의 i의 값을 사용할 수 있다.
for i in range(5):
print(i)
>>>
0
1
2
3
4
for문에서 꼭 range() 함수를 쓸 필요가 없다.
in 오른쪽에 있는 객체는 아무 iterable이면 된다.
문자열도 iterable 자료형이다.
n번 돌리는 것보다 어떤 조건이 계속 충족되고 있을 때 코드를 계속 반복하고 싶을 수도 있다.
while condition: 으로 while문을 활용할 수 있다.
while문이 처음 들어갈 때, 그리고 반복할 코드의 실행이 끝날 때 condition의 진리값이 확인된다.
while문도 들여쓰기를 신경써야 한다.
# while 문
i = 5
while i > 0:
print("Hello!")
i -= 1
강의 문제 풀이
문제 | 자연수 n을 input() 함수로 받은 다음, 1부터 n까지 차례대로 출력하는 코드를 작성하세요.
예시 입력
5
예시 출력
1
2
3
4
5
답.
n = int(input())
for i in range(1, 6):
print(i)
문제 | 35개의 파이썬 과제를 구현하고 있는데, “과제1.doc”, “과제2.doc” 등 “과제n.doc” 파일 이름 형식으로 제출해야 합니다. 35개의 과제 파일 이름을 출력하는 코드를 작성하세요.
입력
없음
출력
과제1.doc
과제2.doc
과제3.doc
(중략)
과제35.doc
답.
for i in range(1, 36):
print(f"과제{i}.doc")
문제 | input() 함수로 두 자연수 n1, n2를 받은 후 n1 ** n2 거듭제곱 연산을 반복문으로 계산하는 코드를 구현하세요.
입출력 예시 (볼드체: 프롬프트 및 출력)
What is number 1? 2
What is number 2? 7
128
답.
n1 = int(input("What is number 1? "))
n2 = int(input("What is number 2? "))
print(n1**n2)
문제 | 입력된 숫자만큼 숫자 1, 2, 3이 반복되는 규칙적인 수열을 출력하세요.
입출력 예시 (볼드체: 프롬프트 및 출력)
What is n? 11
1
2
3
1
2
3
1
2
3
1
2
답.
n = int(input("What is n? "))
for i in range(n):
print((i % 3)+1)
문제 | 문자열을 입력받은 후 거꾸로된 문자열을 출력하는 코드를 작성하세요.
입출력 예시 (볼드체: 프롬프트 및 출력)
Give me a string: hello world
dlrow olleh
답.
string = input("Give me a string: ")
print(string[::-1])
문제 | nn단을 출력하는 반복문 코드를 작성하세요.
여기서 nn단이란 구구단에서 1 x 1에서 n x n까지만 나타낸 것입니다.
입출력 예시 (볼드체: 프롬프트 및 출력)
What is n? 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
답.
n = int(input("What is n? "))
for i in range(1, n + 1): # 1단, 2단, ... n단
for j in range(1, n + 1): # 1부터 n까지 곱하기
print(f"{i} X {j} = {i * j}")
문제 | input 함수로 자연수를 받은 다음에 그 자연수에 해당되는 크기의 삼각형을 그리세요.
입출력 예시 (볼드체: 프롬프트)
What is n? 5
*
* *
* *
* *
*********
답.
n = int(input("What is n? "))
for i in range(1, n): # 위쪽 (1 ~ n-1줄)
print(' ' * (n - i), end='') # 왼쪽 공백
if i == 1:
print('*') # 첫 줄은 별 하나만
else:
print('*' + ' ' * (2 * i - 3) + '*') # 별-공백-별
print('*' * (2 * n - 1)) # 마지막 줄
문제 | 자연수 n을 input() 함수로 받은 다음, 반복문을 사용하여 1부터 입력값(n)까지 2씩 증가하며 숫자를 출력하세요.
예시 입력
5
예시 출력
1
3
5
답.
# 사용자 입력 받기
n = int(input("양의 정수를 입력하세요: "))
# TODO : 1부터 입력된 숫자까지 2 간격으로 출력하세요.
for i in range(1, n+1, 2):
print(i)
문제 | 1부터 사용자가 입력한 양의 정수까지 숫자를 세면서, 현재 숫자와 누적 합을 출력하는 프로그램을 작성하세요.
예시 입력
5
예시 출력
현재 숫자: 1, 누적 합계: 1
현재 숫자: 2, 누적 합계: 3
현재 숫자: 3, 누적 합계: 6
현재 숫자: 4, 누적 합계: 10
현재 숫자: 5, 누적 합계: 15
답.
# Step 1: 사용자 입력 받기
n = int(input("양의 정수를 입력하세요: "))
# Step 2: 변수 초기화
i = 1
total = 0
# Step 3: while문 작성
while i <= n:
total += i # 누적 합계에 현재 숫자 더하기
print(f"현재 숫자: {i}, 누적 합계: {total}")
i += 1 # 다음 숫자로 이동