学习中遇到一题:
⑴ 输入一个正整数,求该数各位数的平方和,例如,123的各位数的平方和=12+22+32,结果=14。
程序运行效果如下:
234
sum=29
我的解题思路为:用input获取的用户输入的正整数为字符串,用循环加上字符串切片操作取出每一位数字字符,再将各位数字字符转为数字进行平方操作,再相加,代码实现如下:
num=input()
s=0
for i in range(0,len(num)):
s=s+pow(eval(num[i]),2)
print("sum={}".format(s))
如果题目改为:
输入一个数字,求该数求该数各位数的平方和,例如,-123的各位数的平方和=12+22+32,结果=14。即包括负数、小数,但不把负号和小数点加入到计算结果,修改代码为:
num=input()
s=0
if eval(num)==0:
print("sum={}".format(s))
else:
if eval(num)>0:
flag=0 #如果输入的是正数,则要取字符串的第一位
else:
flag=1 #如果输入的是负数,则不取字符串的第一位
for i in range(flag,len(num)): #判断正负数的flag
if num[i]!=".": #小数点不加入计算
s = s + pow(eval(num[i]), 2)
print("sum={}".format(s))
原文:https://www.cnblogs.com/harglo/p/14683502.html