파이썬, for문, if~else문 활용, 전체합계, 짝수의 합, 홀수의 합 소스
s=int(input('start num: '))
e=int(input('end num: '))
total, even, odd = 0, 0, 0
for i in range(s, e+1):
total = total + i
if i % 2 == 0:
even = even + i
else:
odd = odd + i
print(f'전체합계 : {total}')
print(f'짝수의 합 : {even}')
print(f'홀수의 합 : {odd}')
결과)
start num: 1
end num: 10
전체합계 : 55
짝수의 합 : 30
홀수의 합 : 25
파이썬 소스 및 결과 입니다. 소스 설명)
사용자가 입력한 시작 숫자부터 끝 숫자까지의 모든 정수에 대해 총합, 짝수의 합, 그리고 홀수의 합을 계산하고 출력합니다.
코드 설명
- s = int(input('start num: '))
- input('start num: ') 함수는 사용자에게 'start num: '이라는 메시지를 보여주고 텍스트 입력을 받습니다.
- 사용자가 입력한 값은 문자열 형태이므로, int() 함수를 이용해 정수로 변환하여 변수 s에 저장합니다.
- 이는 합계 계산을 위한 시작 숫자가 됩니다.
- e = int(input('end num: '))
- input('end num: ') 함수를 통해 'end num: '이라는 메시지를 보여주고 사용자로부터 끝 숫자를 입력받습니다.
- 마찬가지로 int() 함수로 정수로 변환하여 변수 e에 저장합니다.
- total, even, odd = 0, 0, 0
- 세 개의 변수 total, even, odd를 선언하고, 모두 0으로 초기화합니다.
- total은 전체 합계를, even은 짝수의 합을, odd는 홀수의 합을 저장할 변수입니다. 계산을 시작하기 전에 초기값을 0으로 설정해야 올바른 결과를 얻을 수 있습니다.
- for i in range(s, e+1):
- for 반복문은 range() 함수가 생성하는 숫자들을 순회하며 코드를 반복 실행합니다.
- range(s, e+1)는 시작 숫자 s부터 끝 숫자 e까지의 정수들을 순서대로 생성합니다. e+1을 사용하는 이유는 range() 함수가 두 번째 인자로 전달된 숫자는 포함하지 않기 때문입니다. 예를 들어, range(1, 11)은 1부터 10까지의 숫자를 생성합니다.
- 반복이 한 번 실행될 때마다 현재 숫자가 변수 i에 할당됩니다.
- total = total + i
- 반복문이 실행될 때마다 현재 숫자 i를 total 변수에 더하여 전체 합계를 계산합니다. 이를 누적 합산이라고 합니다.
- if i % 2 == 0:
- 현재 숫자 i가 짝수인지 확인하는 조건문입니다.
- % 연산자는 나머지를 구합니다. i % 2는 i를 2로 나눈 나머지 값을 반환합니다.
- 만약 나머지가 0이라면, i는 짝수입니다.
- even = even + i
- 위의 if 조건이 참(True), 즉 i가 짝수일 경우, even 변수에 i를 더하여 짝수의 합을 누적합니다.
- else:
- if 조건이 거짓(False), 즉 i가 홀수일 경우 이 블록의 코드가 실행됩니다.
- odd = odd + i
- i가 홀수일 경우, odd 변수에 i를 더하여 홀수의 합을 누적합니다.
- print(f'전체합계 : {total}')
- 반복문이 모두 끝난 후, f-string을 사용하여 최종적으로 계산된 total 값을 출력합니다.
- f-string은 문자열 내에 {}를 사용하여 변수 값을 쉽게 포함시킬 수 있는 기능입니다.
- print(f'짝수의 합 : {even}') 및 print(f'홀수의 합 : {odd}')
- f-string을 사용해 최종적으로 계산된 even과 odd 값을 각각 출력합니다.
실행 결과 분석
start num: 1과 end num: 10을 입력했을 때, 코드는 1부터 10까지의 숫자를 순회합니다.
- 전체합계: 1부터 10까지의 모든 숫자를 더한 값입니다. (1 + 2 + 3 + ... + 10 = 55)
- 짝수의 합: 1부터 10까지의 짝수(2, 4, 6, 8, 10)를 더한 값입니다. (2 + 4 + 6 + 8 + 10 = 30)
- 홀수의 합: 1부터 10까지의 홀수(1, 3, 5, 7, 9)를 더한 값입니다. (1 + 3 + 5 + 7 + 9 = 25)
이러한 결과는 코드가 의도한 대로 정확하게 작동했음을 보여줍니다.
질문)
total, even, odd = 0, 0, 0 이렇게 하면, '=' 뒤에 있는 숫자가 순서대로 각 변수에 값이 할당되나요?
파이썬에서는 total, even, odd = 0, 0, 0와 같이 한 줄에 여러 변수를 선언하고 초기값을 할당할 수 있습니다.
이를 다중 할당 (Multiple Assignment)이라고 부르며, 등호(=)의 오른쪽에 있는 값들이 순서대로 왼쪽에 있는 변수들에 할당됩니다.
이 경우, 다음과 같이 할당이 이루어집니다:
- total 변수에 첫 번째 값인 0이 할당됩니다.
- even 변수에 두 번째 값인 0이 할당됩니다.
- odd 변수에 세 번째 값인 0이 할당됩니다.
이 방식은 코드를 더 간결하게 만들어 가독성을 높여줍니다.