학교 과제를 가만히 째려보면 한 가지 재미있는 사실을 알 수 있어요. 그것은 바로... 코딩 공부하는 학생한테 수학 공부를 시킨다는 점이에요! 적어도 수학적인 지식은 묻지 말아 줬으면 좋겠는데 말이죠 ㅎㅎ 저희들의 존경스러운 교수님이 되어주세요!!
오늘의 주제
각 자리의 숫자를 더해보자.
세부설명
사용자로부터 하나의 정수를 입력받고 이 정수의 모든 자릿수의 합을 출력하는 함수를 만들어보세요.
과제의 핵심
이것을 푸는 방법은 여러 가지가 있습니다. 하나의 방법을 사용해서 풀었다고 넘어가기보다는 또 다른 방법으로 푸는 아이디어를 눈팅해두시면 나중에 유사하면서 조금 다른 문제에 접근할 때 도움이 되겠습니다. 코딩을 하기 전에 어떤 식으로 프로그램이 돌아갈지 사람의 언어로 시뮬레이션해보시는 것을 강추합니다.
풀이 1
1. 123이라는 숫자를 입력받는다.
2. 123을 10으로 나눈 나머지 3을 저장해둔다.
3. 123을 10으로 나누어 12를 남긴다.
4. 12를 10으로 나눈 나머지 2를 저장해둔다.
5. 12를 10으로 나누어 1을 남긴다.
6. 1을 10으로 나눈 나머지 1을 저장해둔다.
7. 1은 10으로 나누면 1보다 작은 수가 된다.
8. 저장해둔 3, 2, 1을 모두 더한다.
풀이 2
1. 123이라는 숫자를 입력받는다.
2. 123을 분리하여 리스트에 저장한다.
3. 1,2,3을 차례로 불러와 더해준다.
풀이 3
1. 123이라는 숫자를 입력받는다.
2. 123을 100으로 나눈 몫을 저장한다.
3. 123에서 100과 몫을 곱한 값을 뺀다.
4. 23을 10으로 나눈 몫을 저장한다.
5. 23에서 10과 몫을 곱한 값을 뺀다.
6. 3을 1로 나눈 몫을 저장한다.
7. 3에서 1과 몫을 곱한 값을 뺀다.
8. 남은 숫자가 1보다 작으면 종료한다.
9. 지금까지의 몫을 모두 더한다.
완성된 코드
[풀이 1]의 답안
def Digits(n): nums = []
while 1:
if n<1:
break
nums.append(n%10)
n = int(n/10)
print(sum(nums))
x = int(input("정수를 입력해주세요. : "))
Digits(x)
[풀이 2]의 답안
x = input("정수를 입력해주세요. : ")
num = []
for i in x:
num.append(int(i))
print(sum(num))
[풀이 3]의 답안
x = int(input("정수를 입력해주세요. : "))
init = 1
while 1:
if x<init:
break
init = init*10
num = []#몫
while 1:
temp = int(x/init)
if x<1:
break
num.append(temp)
x = x - temp*init
init = init/10
print(sum(num))
'파이썬 지식인' 카테고리의 다른 글
[파이썬 과제] 영화제목별 별점의 평균을 계산해서 csv로 저장하기 (0) | 2022.10.27 |
---|---|
[파이썬 과제] 두 점 사이의 각도 구하기 atan2() (0) | 2022.10.27 |
누구나 알 수 있게 너 빼고 나를 가질 수 있는 비밀번호 486 (0) | 2022.10.07 |
파이썬으로 이렇게 학점계산 하면 A+줘야하는거 아님? (1) | 2022.10.07 |