while True:
a,b=input().split();ans=0;ggg=0 #ggg為進位次數
if a+b=='00':
break
z=len(a);x=len(b)
if len(a)>=len(b):
t=len(b)
else:
t=len(a) #t為最小測資長度
if a=='0' or b == '0':
print('No carry operation.')
continue
a='0'+a;b='0'+b #以免有類似 966 36 的情況
for i in range(t,-1,-1):
if int(a[i])+int(b[i])+ggg>=10:
ans+=1
ggg=(int(a[i])+int(b[i]))//10
else:
ggg=(int(a[i])+int(b[i]))//10
continue
if ans==0:
print('No carry operation.')
elif ans==1:
print('1 carry operation.')
else:
print('%d carry operations.'%(ans))
謝謝!
while True:
a,b=input().split();ans=0;ggg=0 #ggg為進位次數
if a+b=='00':
break
z=len(a);x=len(b)
if len(a)>=len(b):
t=len(b)
else:
t=len(a) #t為最小測資長度
if a=='0' or b == '0':
print('No carry operation.')
continue
a='0'+a;b='0'+b #以免有類似 966 36 的情況
for i in range(t,-1,-1):
if int(a[i])+int(b[i])+ggg>=10:
ans+=1
ggg=(int(a[i])+int(b[i]))//10
else:
ggg=(int(a[i])+int(b[i]))//10
continue
if ans==0:
print('No carry operation.')
elif ans==1:
print('1 carry operation.')
else:
print('%d carry operations.'%(ans))
謝謝!
你的程式並沒有考慮到兩個數位數不同的情況,例如輸入"89 1"的時候,程式會把8和1相加,應該是要把9和1相加才對。你可以先使用zfill補0,讓兩個數的長度相同。
另外,ggg=(int(a[i])+int(b[i]))//10這裡也有問題,可以改成ggg=(int(a[i])+int(b[i])+ggg)//10。不過因為a[i],b[i]小於等於9,ggg不是0就是1,其實不用這麼麻煩