2013-05-03 6 views
-2

У меня возникли проблемы с этим последним вопросом. Это из книги «Как думать, как компьютерный ученый». Не могли бы вы, ребята, помочь мне с этим?Python Сумма квадратов Функция

Запишите функцию sum_of_squares_of_digits, которая вычисляет сумму квадратов цифр целого числа, переданного ей. Например, sum_of_squares_of_digits (987) должен возвращать 194, так как 9 * 2 + 8 * 2 + 7 ** 2 == 81 + 64 + 49 == 194.

+0

Добро пожаловать на переполнение стека! Похоже, вы хотите, чтобы мы написали вам код. Хотя многие пользователи готовы создавать код для кодера, терпящего бедствие, они обычно помогают только тогда, когда плакат уже попытался решить проблему самостоятельно. Хорошим способом продемонстрировать это усилие является включение кода, который вы написали до сих пор, пример ввода (если он есть), ожидаемый вывод и вывод, который вы фактически получаете (вывод консоли, трассировки стека, ошибки компилятора - все, что угодно применимо). Чем больше деталей вы предоставляете, тем больше ответов вы получите. –

ответ

5

Преобразование целого числа в строку, то отдельные символов обратно целые числа:

def sum_of_squares_of_digits(value): 
    return sum(int(c) ** 2 for c in str(value)) 

Это использует sum() вместе с выражением генератора, чтобы включить все цифры обратно в целые числа, квадрат их и подвести итоги снова вместе.

Демо:

>>> def sum_of_squares_of_digits(value): 
...  return sum(int(c) ** 2 for c in str(value)) 
... 
>>> sum_of_squares_of_digits(987) 
194 
+0

вы сказали ему попробовать это самостоятельно, тогда вы дали ему супер-краткий приятный ответ ... для позора, lol –

+0

@GradyPlayer: Я дал краткий пифонический ответ. OP, к сожалению, ничего не узнает от этого, потому что они сами ничего не пробовали. –

+0

Спасибо. Я использую это как ссылку, чтобы получить ответ. Теперь это имеет смысл, хотя на самом деле. Спасибо всем ответчикам. –

2

Вы можете перебирать цифры номера номер путем преобразования его в строку:

>>> n = 102 
>>> for digit in str(n): 
...  print(digit) 
... 
1 
0 
2 

digit еще будет строка, так что вы можете использовать int(digit), чтобы превратить его в целое число.

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