攝影或3C

Python TQC考題308 迴圈位數加總,真的依題意把輸入值當數字很容易出錯,當字串並轉化為list會很好做,

#Python TQC考題308 迴圈位數加總

“””

真的依題意把輸入值當數字很容易出錯,

當字串並轉化為list會很好做

跟404反轉數字異曲同工之妙

“””

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))

 

儲蓄保險王

儲蓄險是板主最喜愛的儲蓄工具,最喜愛的投資理財工具則是ETF,最喜愛的省錢工具則是信用卡