#Python TQC考題308 迴圈位數加總
“””
真的依題意把輸入值當數字很容易出錯,
當字串並轉化為list會很好做
“””
cnt=eval(input()) #輸入次數,例如:3
for i in range(cnt):
temp=num=eval(input())
#輸入的數值資料,例如:123, 456, 789
#temp要一直//10直到變成0為止,
#num則直接print出來
sum=0 #餘數加總
while temp!=0: #判斷 商數 是否為0
#不是temp//10 !=0
sum=sum+temp%10
temp=temp//10 #除法求整數
#是//10,不是/10
#這一段屬於while迴圈
print(“Sum of all digits of %d is %d”%(num,sum))
#print跟temp=eval(input())同縮排,在for迴圈底下
#貼上WP,縮排都亂掉,縮排不可錯
#Spyder執行結果:
#重作一次
cnt = eval(input())
for i in range(cnt):
temp=num=eval(input())
sum=0
while temp !=0:
sum=sum+temp%10
temp=temp//10
print(“Sum of all digits of {:} is {:}”.format(num,sum))
#縮排已亂,需正確
#改用list做
times=eval(input())
L=[]
for i in range(times):
n=input()
#不用eval,需要字串形式
L=list(n)
L_num=[eval(i) for i in L]
ans=sum(L_num)
n_num=eval(n)
print(“Sum of all digits of %d is %d” %(n_num,ans))
#直覺還是會用老做法,但比list容易出錯:
times = eval(input())
L=[] #這一行是多餘的,
#迴圈內又沒有.append(元素)
for i in range(times):
str1=input() #把輸入的數字當成字串處理
L=list(str1)
#要用list(),不能使用[ ]的語法,
#[ ]沒辦法把每一個數字拆開
#把輸入的數字當成字串,
#並將每一位數,存為list的元素
print(L) #檢查用,好理解語法
Ldigit=[eval(i) for i in L]
#將list中的元素數字化,才能做加總
#解題精髓就紅字這兩行
print(Ldigit) #檢查用,好理解語法
sum1=sum(Ldigit)
print(“Sum of all digits of %s is %d” %(str1,sum1))
近期留言