[英]I write the code in python to count digits of a number but It doesn't work for some numbers
[英]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.