from decimal import *
try:
while 1:
a, b, c = input().split()
a = Decimal(a)
b = Decimal(b)
c = int(c)
getcontext().prec = 10000
d = str(a // b)
e = str((a % b) / b)
ans = ""
ans += d
if e == "0":
ans += "."
for i in range(c):
ans += str(0)
else:
for i in range(1, c + 2):
ans += e[i]
print(ans)
except:
pass
from decimal import *
try:
while 1:
a, b, c = input().split()
a = Decimal(a)
b = Decimal(b)
c = int(c)
getcontext().prec = 10000
d = str(a // b)
e = str((a % b) / b)
ans = ""
ans += d
if e == "0":
ans += "."
for i in range(c):
ans += str(0)
else:
for i in range(1, c + 2):
ans += e[i]
print(ans)
except:
pass
如果把except改成except EOFError,會看到錯誤訊息:
Traceback (most recent call last): File "/8683795/code_8683795.py", line 37, in ans += e[i] IndexError: string index out of range
想想看怎麼改吧
會有問題的原因是如果後面位數都是0,後面的0不會出現在字串e裡面,導致e的長度比你想像中短。(例如1/2這種情況)
所以你的程式可以改成從e的第2個字到最後一個字,後面再補0。
補充:你其實不需要那兩個for迴圈,第一個for迴圈可以改成
ans += "0" * c
代表"0"重複c次
第二個for迴圈可以改成
ans += e[1:c+2]
就好了,而且e的長度如果太短,也不會發生錯誤,最多就只到e的最後一個字元