首页 > 解决方案 > I want to find the sum of squares of digits in a number, my code work fine for positive numbers but doesn't seem to work with negative numbers

问题描述

N=int(input('enter a number'))
sum=0
for digit in str(N):
            sum=sum+(int(digit))**2
print(sum) 

This code works totally fine with positive numbers but How do I make it work for negative numbers too?

标签: python

解决方案


用于re.findall查找数字:

import re
num = int(input('Enter a number: '))
sum = 0
for digit in re.findall(r'\d', str(num)):
    sum = sum + (int(digit))**2
print(sum)

您还可以使用更紧凑和更 Pythonic 的列表理解

sum_sq = sum([int(i)**2 for i in re.findall(r'\d', str(num))])

最后,不需要对输入进行初始转换int以及随后将其转换回。str把它们放在一起:

import re
num = input('Enter a number: ')
sum_sq = sum([int(i)**2 for i in re.findall(r'\d', num)])
print(sum_sq)

推荐阅读