python - 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?
解决方案
用于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)
推荐阅读
- css - CSS 在内表上使用 :not() 选择器
- angular - Rxjs:如何级联多个依赖调用的数组
- python - form.validate_on_submit() 的问题
- python - 我在刮掉的物品中找不到字符串
- nested - GraphQL:引用其他 id
- node.js - 带有 GIT 工作流的 Package.json - 开发和主分支的独立依赖项
- javascript - Javascript“窗口”宽度和高度计算
- r - 生存::tmerge() 给出 as.Date.numeric(value) 错误
- amazon-web-services - 使用 SSH 和 pem 文件的 EC2 连接返回 Permission denied (publickey)
- python - x 轴为 1d Numpy 数组且 y 轴为 2d Numpy 数组时的散点图