파이썬 초보 3의배수의 합을 구하는 코드
조회수 761회
num=int(input("숫자를 입력 :"))
i=1
sum=0
while i <= num:
i=i+1
if (i%3) != 0 :
continue
sum=sum+i
print("1부터",num,"까지 3의 배수의 합은 :",sum)
여기서 i가 왜 1로 초기화하는지 sum은 왜 0으로 초기화하는지 좀 알려주시길 바랍니다.
2 답변
-
초기화가 뭔지 모르시는 거 같습니다.
우리가 손을 꼽아 숫자를 셀 때 제일 먼저 하는 일이 뭐라고 생각하세요? 엄지를 접어서 1을 꼽는 것일까요? 아니에요. 우리가 손을 꼽아 숫자를 셀 때 제일 먼저 하는 일은 손이 있긴 한지 확인하는 것입니다. 그 다음에는 손가락이 있는지 확인하고, 그 다음에는 어느 손가락도 꼽지 않은 상태인지 확인합니다. 그런 무의식적인 확인이 끝난 다음에야 우리는 비로소 엄지를 접어서 1을 꼽기 시작할 수 있습니다. 지체장애인이 아니라면 깨닫기 어려운 의외의 진실이지요.
이제 코드를 볼까요. 1부터
num
까지 3의 배수의 합을 구하려면 제일 먼저 뭘 해야 할까요? 그냥 바로 1, 2, 3, ... 하고 숫자를 꼽으면서 확인하고 더하면 될까요? 아니에요. 뭔가의 합을 구하기 위해서 제일 먼저 해야 하는 일은 합을 저장할 변수를 선언하는 것입니다. 말하자면 손이 없던 파이썬한테 손을 주는 거에요. 그러면 파이썬은 그게 정말 손이 맞긴 한지(ex. 변수가 선언되긴 했는지), 거기에 숫자를 저장할 수 있는지(ex. 메모리 공간이 있는지)를 확인한 다음에야 비로소 1, 2, 3, ... 꼽으면서 그 변수에 숫자를 더해 줄 수 있습니다. 어? 합 말고도 또 무슨 숫자를 꼽아야 되나 보네요? 뭘 꼽는 걸까요? 파이썬은 이걸 알고 있나요? 모르겠네요. 또 손을 안 달아줬군요! 합에 더할지 말지 결정해야 하는 숫자도 파이썬이 꼽아야 하니까 변수 선언을 하나 더 해서 손을 하나 더 달아줘야겠군요.요컨대 초기화란 얻고자 하는 값을 실제로 얻기 직전에 그것이 가능하도록 리셋을 하는 단계입니다. 보통은 (아무 일도 안 일어났다는 뜻에서)
0
,""
(빈 문자열),[]
(빈 리스트),None
또는 무언가의 첫번째 요소를 할당합니다. 여기서는i=1
인데 그건 왜냐하면 3의 배수 여부를 확인하는 작업은 가장 작은 자연수 1부터 수행하는 작업이라서 그래요. 그래야 파이썬이 1부터num
까지 꼽으면서 "지금 꼽은i
는 3의 배수인가?"를 할 수 있겠지요. 만약 3의 배수가 맞다면, 그걸sum
에 꼽아줄 테고요.설명을 너무 낮은 수준으로 드린 거 같아서 민망하네요. 이해가 되셨나요?
-
댓글 입력