繁体   English   中英

我想找到数字中数字的平方和,我的代码适用于正数但似乎不适用于负数

[英]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) 

这段代码对正数完全适用,但我如何让它也适用于负数?

使用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)

使用abs()将输入转换为正数。

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

您可以跳过不是数字的字符。

N = input('enter a number')
total = 0
for digit in [int(d) for d in N if d.isdigit()]:
    total = total + digit**2
print(total) 

(注意:我还删除了开头不必要的输入转换,但是如果它不是整数,也许您希望引发错误。在这种情况下,只需将其放回去并将列表推导中的N替换为str(N) )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM