2014-10-16 2 views
0

Как я могу сделать сумму чисел, которые были заданы для функции? Нравится 0: def sum (123)
Как я могу сделать python sum 123, чтобы дать 6, используя while?Сумма цифр числа, использующего значение

def calc_soma(num): 
    ns = str(num) 
    soma = 0 
    while soma < len(ns): 
     soma = eval(ns[soma]) 
     soma = soma + 1 
    return soma 

Я пробовал это, но он не работает. Я новичок в python, поэтому я не много чего не делаю

ответ

0

Вы используете soma для хранения индексов И результата. Вот модифицированная версия:

>>> def calc_soma(num): 
...  ns = str(num) 
...  soma = 0 
...  indic = 0 
...  while indic < len(ns): 
...   soma += int(ns[indic]) 
...   indic = indic + 1 
...  return soma 
... 
>>> calc_soma(123) 
6 
>>> calc_soma(1048) 
13 

Если вы хотите перебрать str, вы можете использовать список понимание:

>>> sum([int(i) for i in str(123)]) 
6 
>>> sum([int(i) for i in str(2048)]) 
14 

Вы можете также избавиться от [/]:

sum(int(i) for i in str(123)) 

(Кроме того, проверьте ответ барака маноса. Вы можете «математически» сделать это)

+0

Извините за вопрос, но почему вы + = в "soma + = int (ns [indic]) "вместо просто =? –

6

Почему вы преобразовываете его в строку, когда вы можете просто получить каждую цифру из целого числа?

while num > 0: 
    soma += num%10 
    num /= 10 
+0

Черт. Не видел ваш ответ, иначе я бы не опубликовал мой :(+1 Dude –

+0

@GamesBrainiac: Спасибо ** Dude ** :) –

0

В основном вы mod это:

>>> total = 0 
>>> num = 123 
>>> while num > 0: 
...  total += num % 10 
...  num /= 10 
... 
... 
>>> total 
6 

Вы можете использовать str, но это будет медленным.

Смежные вопросы