小数循环节
【问题】我们在做小数除法时候,有的时候得到有限小数,有的时候得到无限循环小数。
此题目要求你对给定的两个整数做除法,如果是有限小数,直接表达。如果是无限循环小数,用方括号标出它的循环节。
例如,1/7:
0.[142857]
再例如,12345/1700:
7.26[1764705882352941]
分析:
通过手算除法的过程,我们可以看出:
下一位的商决定于当前的余数。只要当前的余数出现重复,商就必然会重复,也就是出现了商的循环。
可见,基本思路就是用两个列表,分别存商和余数。
余数一重复,循环就停止。
def xun_huan_jie(a,b):
zheng = a // b ## 整数部分
shang = [] ## 小数点后的商
yu = [] ## 余数
yu.append(a % b)
r = str(zheng) + "."
while True:
if yu[-1] == 0:
r += "".join(map(str,shang))
break