实现一个函数,输出两个整数相除后的无限循环小数部分

Author Avatar
vogel 10月 30,2020
  • 在其它设备中阅读本文章

介绍

面试的时候遇到一个题:
实现一个函数,输入两个整数a, b . 输出a/b后的无限不循环小数

举例:
输入1, 3. 输出 0.3

面试的时候想了好久没有想出来,面试完再仔细想想,发现十分简单.

思路

  • 输入两个整数a,b 后,先用 int(a/b) 得到整数部分
    再把a mod b 赋值给a, 此时a一定小于b,所以需要把a乘10
  • 创建一个列表或集合,用于保存使用过的a .
  • 开始循环判断
  • 如果a存在列表或集合中,则一定产生了循环,则中断循环并输出结果.
  • 如果a不存在列表或集合中,则未产生循环, 此时往列表或集合里添加a.
    并且在小数部分添加上 int(a/b)。并且重新赋值a为a mod b 再乘以10

代码

def func(a, b):
    result = str(int(a/b)) + "."
    nums = []
    a = a % b * 10
    while nums.count(a) == 0:
        nums.append(a)
        result += str(int(a / b))
        a = a % b * 10
    print(result)