python學習記錄之數字拆分成各個位數
學習中遇到一題:
⑴ 輸入一個正整數,求該數各位數的平方和,例如,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))