python3 题解(30 寻找小数循环节)

该博客探讨如何在Python3中处理小数循环节。通过分析除法过程,提出使用两个列表记录商和余数来检测循环节。当余数重复时,循环结束。文中提到可以将商直接存储为字符串以简化处理,并利用divmod函数减少计算次数。代码处理了包括0.5在内的所有小数,并在返回结果时进行调整,删除不合规的0.0或小数点。
摘要由CSDN通过智能技术生成

小数循环节

【问题】我们在做小数除法时候,有的时候得到有限小数,有的时候得到无限循环小数。
此题目要求你对给定的两个整数做除法,如果是有限小数,直接表达。如果是无限循环小数,用方括号标出它的循环节。
例如,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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值