본문 바로가기
Python

파이썬 초급 #039 while 반복문 입력한 수의 각 자리수 합(a%10, a//10)

by Smart Factory in 2020 2022. 2. 16.
728x90
반응형

안녕하세요. 스마트팩토입니다. 
수를 입력하고 그 숫자의 각자리수의 합을 구하는 코드를 알아보겠습니다. 

 

1. while 반복문 : 각 자리수합 구하는 코드 

 가. 나머지 연산자: %
     예를 들어서 22%10을 하면 나머지가 2가 남게 된다. 
     a=22%10 하면 a=2가 출력된다. 
나. 몫 연산자 //
     예를 들어서 22//10을 하면 몫이 2가 된다. 
    b=22//10을 하면 b=2가된다. 

 이를 이용하면 
a =321 에서 각 자리수 합 6을 출력할 수 있다. 

코드를 보면서 알아보겠습니다. 

a=321
Sums=0

변수 값을 지정하여 321을 지정하고 각 자리수를  합을 저장할 변수 Sums 로 했습니다.

while a>0:
      b=a%10
      a//=10
      Sums+=b

 

while 문의 반복을 위해 조건으로  a>0으로 했습니다. 
각 자리수는 10으로 나누어서 나머지를 더하는 방식으로 구합니다. 

즉 321을 10으로 나누면  32 에 나머지가 1 입니다. 
    32를 10으로 나누면   3에 나머지가 2 이고
   1을 10으로 나누면  0에 나머지가 1이 됩니다. 

여기서  321, --> 32--> 3 --> 0   즉 몫을 a 값으로 변하게 하면 

while반복문은 a=0일 때 빠져나옵니다. 

 각 단계별로 나머지를 다 더하게 되는데 그 값은 Sums 에 저장됩니다. 

print(Sums)

나머지들의 합을 더한값을 출력하면 끝~

a=321
Sums=0
while a>0:
      b=a%10
      a//=10
      Sums+=b

print(Sums)

 

 

num=int(input("숫자를 입력하세요. 입력:"))
n=1
result=num
c=num-1

계산되는 과정을 보기 위해서  변수설정을  여러개로 했습니다. 

num은 입력 받는 숫자. 그 수보다 작아지는 수가 c 로 변수를 설정하고,  num! 은 결과적으로 result! 로 계산하기 위해 설정했습니다. 

while n<num:
    print("num:",num,"num-1:",c, "resutl:",result)
    result*=c
    n+=1
    c-=1

num=n 이 같아지는 전 단계까지 진행합니다. ! 특성상 1까지인데 등호가 들어가면 0까지 되어 결과값이 0 이됩니다. 

그래서 항상 마지막이 1이되도록 하기 위해서 위처럼 설정하였습니다. 

n은 1씩 증가 시키고, c는 하나씩 감소시켰습니다. 초기 설정이 입력한 값보다 작다는 것..

print("num:",num,"num-1:",c, "resutl:",result)

는 결과값을 보기 위해서 넣었습니다 .

팩토리얼 코드는 설정하는 사람에 따라 다양할 수 있습니다. 

print(result)

 

num=int(input("숫자를 입력하세요. 입력:"))
n=1
result=num
c=num-1
while n<num:
    print("num:",num,"num-1:",c, "resutl:",result)
    result*=c
    n+=1
    c-=1

print(result)
입력한 수의 각자리수 합 구하는 코드 

 

이번에는 숫자를 입력받아 그 각 자리수의 합을 구하는 코드입니다. 

a=int(input("숫자를 입력해 주세요: "))
Sums=0
while a>0:
      b=a%10
      a//=10
      Sums+=b

print("입력한 수의 각 자리 합:", Sums)

while 반복문 블럭에서 코드를 보고 무한 루프를 돌게 되기 때문에 조건에 제한을 두어야 합니다. 

if 조건을 써서  

 

while a>0:
  if a% 10 !=0:
   b=a%10
   a//=10
   Sums+=b 

을 넣어도 됩니다. 

 

a=int(input("숫자를 입력해 주세요: "))
Sums=0
while a>0:
      b=a%10
      a//=10
      Sums+=b

print("입력한 수의 각 자리 합:", Sums)

 

728x90
반응형

댓글