복붙노트

[PYTHON] 숫자의 숫자 합계 - 파이썬

PYTHON

숫자의 숫자 합계 - 파이썬

숫자의 숫자 합계를 찾으려면 다음을 수행하십시오.

이 작업을 수행하는 가장 빠른 방법은 무엇입니까?

나는 본능적으로 그렇게했다 :

sum(int(digit) for digit in str(number))

나는 이것을 온라인으로 발견했다.

sum(map(int, str(number)))

어떤 속도를 위해 사용하는 것이 가장 좋습니다, 그리고 더 빠른 다른 방법이 있습니까?

해결법

  1. ==============================

    1.순전히 정수로 할 수 있으며 가장 효율적입니다.

    순전히 정수로 할 수 있으며 가장 효율적입니다.

    def sum_digits(n):
        s = 0
        while n:
            s += n % 10
            n //= 10
        return s
    

    또는 divmod :

    def sum_digits2(n):
        s = 0
        while n:
            n, remainder = divmod(n, 10)
            s += remainder
        return s
    

    하지만 게시 한 두 줄 모두 괜찮습니다.

     

    추가 된 과제가없는 버전도 더 빠릅니다.

    def sum_digits3(n):
       r = 0
       while n:
           r, n = r + n % 10, n // 10
       return r
    

     

    > %timeit sum_digits(n)
    1000000 loops, best of 3: 574 ns per loop
    
    > %timeit sum_digits2(n)
    1000000 loops, best of 3: 716 ns per loop
    
    > %timeit sum_digits3(n)
    1000000 loops, best of 3: 479 ns per loop
    
    > %timeit sum(map(int, str(n)))
    1000000 loops, best of 3: 1.42 us per loop
    
    > %timeit sum([int(digit) for digit in str(n)])
    100000 loops, best of 3: 1.52 us per loop
    
    > %timeit sum(int(digit) for digit in str(n))
    100000 loops, best of 3: 2.04 us per loop
    
  2. ==============================

    2.한 자리 숫자 (9로 나눌 수있는 가장 좋아하는 특징 중 하나)를 얻을 때까지 숫자 합계를 계속 유지하려면 다음을 수행 할 수 있습니다.

    한 자리 숫자 (9로 나눌 수있는 가장 좋아하는 특징 중 하나)를 얻을 때까지 숫자 합계를 계속 유지하려면 다음을 수행 할 수 있습니다.

    def digital_root(n):
        x = sum(int(digit) for digit in str(n))
        if x < 10:
            return x
        else:
            return digital_root(x)
    

    실제로 실제로 꽤 빠르다는 것이 밝혀졌습니다.

    %timeit digital_root(12312658419614961365)
    
    10000 loops, best of 3: 22.6 µs per loop
    
  3. ==============================

    3.이게 도움이 될거야.

    이게 도움이 될거야.

    def digit_sum(n):
        num_str = str(n)
        sum = 0
        for i in range(0, len(num_str)):
            sum += int(num_str[i])
        return sum
    
  4. ==============================

    4.내가 해결 한 일부 코덱스 아카데미 도전 과제 :

    내가 해결 한 일부 코덱스 아카데미 도전 과제 :

    def digit_sum(n):
    arr = []
    nstr = str(n)
    for x in nstr:
        arr.append(int(x))
    return sum(arr)
    
  5. ==============================

    5.이것을 사용할 수도 있습니다 :

    이것을 사용할 수도 있습니다 :

    def sum_digits(num):
        num = str(num)
        digitSum = 0
        for i in num:
            digitSum += int(i)
        return digitSum
    print sum_digits(875)
    
  6. ==============================

    6.

    def digitsum(n):
        result = 0
        for i in range(len(str(n))):
            result = result + int(str(n)[i:i+1])
        return(result)
    

    "결과"는 0으로 초기화됩니다.

    for 루프 내에서 숫자 (n)는 루프 인덱스 (i)로 분리 된 문자열로 변환되어 각 숫자를 가져옵니다. ---> str (n) [i : i + 1]

    이 분리 된 자릿수는 다시 정수로 변환됩니다. ----> int (str (n) [i : i + 1])

    따라서 결과에 추가됩니다.

  7. ==============================

    7.

    def sumOfDigits():
    
        n=int(input("enter digit:")) 
        sum=0
        while n!=0 :
    
            m=n%10
            n=n/10
            sum=int(sum+m)
    
        print(sum)
    
    sumOfDigits()
    
  8. ==============================

    8.가장 좋은 방법은 목록 이해력을 사용하는 것입니다.

    가장 좋은 방법은 목록 이해력을 사용하는 것입니다.

    sum([int(digit) for digit in str(abs(number))])
    
  9. ==============================

    9.

    num = 123
    dig = 0
    sum = 0
    while(num > 0):
      dig = int(num%10)
      sum = sum+dig
      num = num/10
    

    print (sum) //이 줄 위에 공간을 추가하십시오.

  10. ==============================

    10.이것을 시도 할 수 있습니다.

    이것을 시도 할 수 있습니다.

    def sumDigits(number):
        sum = 0
        while(number>0):
            lastdigit = number%10
            sum += lastdigit
            number = number//10
    
        return sum
    
  11. ==============================

    11.

    n = str(input("Enter the number\n"))
    
    list1 = []
    
    for each_number in n:
    
            list1.append(int(each_number))
    
    print(sum(list1))
    
  12. from https://stackoverflow.com/questions/14939953/sum-the-digits-of-a-number-python by cc-by-sa and MIT license