Windows · Python 3.12.4. 본문의 첫 예제를 실행하여 표준 출력과 예상 결과가 일치함을 확인했습니다. 연습문제의 모든 입력을 검증한 것은 아닙니다.
이 글의 순서 4개 단락
여러 날 동안 읽은 페이지 수를 합하려면 매일의 값을 입력받아 이전 합계에 더해야 합니다. Python의 for와 range를 사용하면 입력받을 날의 수에 맞춰 이 작업을 반복할 수 있습니다. 이 글의 예제는 Python 3.12를 기준으로 합니다.
반복해서 페이지 수 입력받기
다음 코드는 먼저 읽은 날의 수를 입력받고, 그 횟수만큼 페이지 수를 입력받아 합계를 출력합니다. 날의 수와 페이지 수에는 정수를 입력한다고 가정합니다.
days = int(input("읽은 날의 수: "))
if days < 0:
print("날의 수는 0 이상이어야 합니다.")
else:
total = 0
for day in range(1, days + 1):
pages = int(input(f"{day}일째 읽은 페이지 수: "))
total = total + pages
print(f"총 읽은 페이지 수: {total}")

예를 들어 입력을 다음 순서로 한 줄씩 넣습니다. 첫 번째 3은 날의 수이고, 나머지는 각 날에 읽은 페이지 수입니다.
3
12
8
15
입력한 값이 화면에 표시되는 대화형 환경에서는 예상 화면이 다음과 같습니다. 안내 문구 뒤의 숫자는 사용자가 입력한 값입니다.
읽은 날의 수: 3
1일째 읽은 페이지 수: 12
2일째 읽은 페이지 수: 8
3일째 읽은 페이지 수: 15
총 읽은 페이지 수: 35
for와 range, 누적 변수 이해하기
range(1, days + 1)은 1부터 시작해 days + 1 바로 앞까지의 정수를 차례로 만듭니다. days가 3이면 day에는 1, 2, 3이 순서대로 들어갑니다. for 아래에 들여쓴 두 줄은 각 값마다 한 번씩 실행됩니다.
total은 지금까지의 합계를 저장하는 누적 변수입니다. 반복하기 전에 total = 0으로 시작하고, total = total + pages에서 기존 합계에 새 입력값을 더한 결과를 다시 total에 저장합니다.
| 입력한 날 | pages | 더한 뒤 total |
|---|---|---|
| 1일째 | 12 | 12 |
| 2일째 | 8 | 20 |
| 3일째 | 15 | 35 |
마지막 print는 반복문보다 한 단계 덜 들여써서 모든 입력이 끝난 뒤 한 번 실행됩니다.
흔한 실수와 경계 조건
range(1, days)로 쓰면 끝값인days가 빠집니다. 3일을 입력해도 1일째와 2일째만 처리하므로, 3일째까지 포함하려면 끝값에days + 1을 사용합니다.total = 0을 반복문 안에 두면 매번 합계가 0으로 돌아갑니다. 초기화는 반복문 앞에서 한 번만 해야 합니다.- 날의 수가
0이면range(1, 1)에 값이 없어 페이지 수를 묻지 않고 총합0을 출력합니다. 음수를 입력하면 안내 문구를 출력합니다. - 이 예제는 정수 입력을 전제로 합니다. 빈 문자열이나 정수로 바꿀 수 없는 값을 입력하면
int()에서ValueError가 발생합니다. 또한 음수 페이지 수는 그대로 합계에 더해지므로, 실제 기록에 사용하려면 앞 강의에서 배운 조건문과 예외 처리를 이용해 입력을 검증해야 합니다.
연습: 짝수의 합 구하기
1부터 10까지의 정수 중 짝수만 더해 출력해 보세요. range의 끝값은 포함되지 않는다는 점과, 짝수는 2로 나눈 나머지가 0이라는 점을 이용합니다.
풀이
total = 0
for number in range(1, 11):
if number % 2 == 0:
total = total + number
print(total)
예상 출력은 30입니다. range(1, 11)이 1부터 10까지의 수를 차례로 제공하고, 조건에 맞는 2, 4, 6, 8, 10만 누적하기 때문입니다.
CHECK THE SOURCE
참고한 공식 문서
기능 설명은 위 문서를 참고했으며, 예제의 입력·결과와 한계는 본문에 따로 기록했습니다.