python函数编程

求问各位大神:

习题一 给定自然数 n,编写函数,求其各位数字之和,如数 1234 各位数字之和为10。编写函数,重复上述过程,直至得到 1~9 之间的某个数。

习题二 继续上一题。编写函数,检查 1~99999 之间所有数,给出最终结果中1~9 出现比例。

习题三 编写函数,使用递归方法求 C(n, k) 。

习题四 编写函数,计算圆周率。存在圆心在直角坐标系原点且半径为 1 的圆及其外切正方形。为计算方便,仅考虑位于第一象限的四分之一正方形和四分之一圆。随机生成该四分之一正方形中一系列点,散布于四分之一圆内比例即为圆周率四分之一。散步点越多,结果越精确,耗时也越长。

def pf(n):
    s = 0
    while n>0:
        s += n%10
        n //= 10
    return s

def gf(n):
    while n>9:
        n = pf(n)
        print(n)
    return n

n = int(input("输入一个自然数:"))
print("结果:",gf(n))

 

第二题

def pf(n):
    s = 0
    while n>0:
        s += n%10
        n //= 10
    return s

def gf(n):
    while n>9:
        n = pf(n)
    return n

def hf():
    dic = {x:0 for x in range(1,10)}
    for n in range(1,100000):
        s = gf(n)
        dic[s] += 1
    for k,v in dic.items():
        print(f'{k} 出现 {v} 次、比率 {v/99999:%}')
hf()

 

“直至得到 1~9 之间的某个数。”是什么意思?

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y