鱼C论坛

 找回密码
 立即注册
查看: 3448|回复: 36

[技术交流] Python:每日一题 203

[复制链接]
发表于 2018-8-30 09:58:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 冬雪雪冬 于 2018-9-2 15:16 编辑

我们的玩法做了一下改变:

1. 楼主不再提供答案。
2. 请大家先独立思考,再参考其他鱼油的解答,这样才有助于自己编程水平的提高。开始阶段是看不到其他人的回帖的,等答题完成,开始评分时再取消限制。
3. 鼓励大家积极答题,奖励的期限为出题后24小时内。
4. 根据答案的质量给予1~3鱼币的奖励。

题目:
这次是个计算题,编写一个函数,求出结果。
1.png


=============================
  1. def fun203(n):
  2.     import functools
  3.     return functools.reduce(lambda x, y: 1 / x + y, range(n, 0, -1))
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-8-30 10:26:21 | 显示全部楼层
  1. def fun203(n):
  2.     m = n-1 + 1/n
  3.     while n > 2:
  4.         n -= 1
  5.         m = n-1+1/m

  6.     return m


  7. for i in range(1, 20):
  8.     print(fun203(i))
复制代码


结果:
1.0
1.5
1.4285714285714286
1.4333333333333333
1.4331210191082802
1.433127572016461
1.433127424220658
1.433127426756089
1.433127426721945
1.433127426722315
1.4331274267223117
1.4331274267223117
1.4331274267223117
1.4331274267223117
1.4331274267223117
1.4331274267223117
1.4331274267223117
1.4331274267223117
1.4331274267223117

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 10:31:04 | 显示全部楼层
本帖最后由 塔利班 于 2018-9-2 10:50 编辑
  1. def fun203(n):
  2.     res=0
  3.     while n!=1:
  4.         res=1/(n+res)
  5.         n-=1
  6.     return res+1
复制代码

  1. def fun(n):
  2.     if n==1:
  3.         return '1'
  4.     elif n==2:
  5.         return '1+1/(2)'
  6.     else:
  7.         return fun(n-1)[:-(n-2)]+'+1/(%d'%n+')'*(n-1)
  8. def fun203(n):
  9.     return eval(fun(n))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 10:33:53 | 显示全部楼层
本帖最后由 Wangzy1025 于 2018-8-30 10:35 编辑
  1. def fun203(n):
  2.     temp = 1 / n
  3.     n -= 1
  4.     while n > 1:
  5.         temp = 1 / (temp + n)
  6.         n -= 1
  7.     return temp + n


  8. for i in range(1, 10):
  9.     print(fun203(i))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 10:37:22 | 显示全部楼层
  1. def fun(n):
  2.     if n==1:
  3.         return 1
  4.     else:
  5.         i=1
  6.         S = 1/n
  7.         while (n-i)!=1:
  8.             S = 1/(S + (n-i))
  9.             i+=1
  10.         return 1+S

  11. print(fun(1))
  12. print(fun(2))
  13. print(fun(3))
  14. print(fun(4))
  15. print(fun(5))
复制代码


运行结果:
1
1.5
1.4285714285714286
1.4333333333333333
1.4331210191082802

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 10:48:58 | 显示全部楼层
def f(n):
    x = n
    count = n

    while x > 1:
        
        count = 1/count + (x-1)
        x -= 1
        
    return count

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 10:58:06 | 显示全部楼层
  1. def fun203(n):
  2.     if n == 1:
  3.         return 1
  4.     else:
  5.         result = 1/n
  6.         for i in range(n-1,1,-1):
  7.             result += i
  8.             result = 1/result
  9.         result += 1
  10.         return result
  11.         

  12. if __name__ == '__main__':
  13.     for i in range(1,11):
  14.         print(fun203(i))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 11:46:20 | 显示全部楼层
  1. def cal(n):
  2.     t = n;
  3.     while n > 1:
  4.         x = 1 / t
  5.         n -= 1
  6.         x += n
  7.         t = x
  8.     return t
  9. if __name__ == "__main__":
  10.     print(cal(1))
  11.     print(cal(2))
  12.     print(cal(3))
  13.     print(cal(4))
  14.         
复制代码
1.png

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 11:49:14 | 显示全部楼层
  1. def getSum(n):
  2.     sum0 = n
  3.     n -= 1
  4.     while n:
  5.         sum0 = n + 1 / sum0
  6.         n -= 1
  7.     return sum0

  8. print(getSum(1))      # 1
  9. print(getSum(2))      # 1.5
  10. print(getSum(3))      # 1.4285714285714286
  11. print(getSum(4))      # 1.4333333333333333
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 12:47:34 | 显示全部楼层
  1. def fun203(n):
  2.     m = n
  3.     while n > 1:
  4.         m = (n-1)+1/m
  5.         n -= 1
  6.     return m
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 13:31:45 | 显示全部楼层
def fun1(n):
    return 1/n


def fun2(n):
    sum=n
    while 1:
        if n==1:
            break
        else:
             sum=n-1+fun1(sum)
             n-=1
    return sum

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 14:24:46 | 显示全部楼层
  1. def fun203(n):
  2.     temp = n
  3.     while n > 1:
  4.         temp = n-1 + 1/temp
  5.         n -= 1
  6.     return temp
  7.    
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 14:28:17 | 显示全部楼层
def test203(n):
    temp = 1/n
    if n == 1:
        return 1
    if n == 2:
        return 1.5
    while n-1 >= 2:
        temp = 1/(temp+n-1)
        print(temp)
        n -= 1
        print(n)
    return 1+temp

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 15:07:53 | 显示全部楼层
def cal(n):
    nums=1/n
    if n==1:
        return nums
    else:
        while n>2:
            nums=1/(n-1+nums)
            n-=1
        return  nums+1

#有点愚昧,只能想笨方法 ,等看鱼友们的简便方法

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 15:16:17 | 显示全部楼层
  1. def cal(n):
  2.     sum=1/n
  3.     while n>0:
  4.         sum+=(n-1)
  5.         sum = 1/sum
  6.         n-=1
  7.     return sum
复制代码


计算结果如下
  1. >>> cal(1)
  2. 1.0
  3. >>> cal(2)
  4. 1.5
  5. >>> cal(3)
  6. 1.4285714285714286
  7. >>> cal(4)
  8. 1.4333333333333333
  9. >>>
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 15:29:34 | 显示全部楼层
本帖最后由 yjsx86 于 2018-8-30 15:32 编辑

  1. def func(n):
  2.     if n == 1:
  3.         return 1
  4.     numerator = 1
  5.     denominator = n
  6.     n = n - 1
  7.     while n > 1:
  8.         numerator = n * denominator + numerator
  9.         numerator, denominator = denominator, numerator
  10.         n -= 1
  11.     return 1 + numerator / denominator

  12. for x in range(1,5):
  13.     print(func(x))
复制代码


#result
1
1.5
1.4285714285714286
1.4333333333333333

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 15:30:16 | 显示全部楼层
  1. def fun203 (n):
  2.     result=n
  3.     while n!=1:
  4.         result=(n-1)+1/result
  5.         n-=1
  6.         fun203(n)
  7.     return(result)

  8. for i in range(1,10):
  9.     print(fun203(i))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 16:43:14 | 显示全部楼层
  1. def fun203(n):
  2.     result = 1
  3.    
  4.     if n == 1:
  5.         return result
  6.    
  7.     elif n > 1:
  8.         divisor = n
  9.         while n > 2:
  10.             divisor = 1/divisor
  11.             divisor += n-1
  12.             n -= 1
  13.         result += 1/divisor
  14.    
  15.     return result
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 17:37:10 | 显示全部楼层
  1. def num(n):
  2.     list1 = []
  3.     list2 = []
  4.     if n == 1:
  5.         return 1
  6.     else:
  7.         list1.append(1 / n)
  8.         while n>1:
  9.             try:
  10.                 if list1 == []:
  11.                     list1.append(1/list2[-1])
  12.                     n += 1
  13.                 else:
  14.                     list2.append((n-1)+list1[0])
  15.                     list1.pop()
  16.             except:
  17.                 pass
  18.             n -= 1
  19.         return list2[-1]
  20. n = num(5)
  21. print(n)
复制代码


标准的非递归写法~~~~

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-8-30 17:54:40 | 显示全部楼层
  1. def py203(n):
  2.     if n <= 0 :
  3.         print("输入参数错误")
  4.         return
  5.     result = 0
  6.     i = n
  7.     while i != 0:
  8.         if i == n:
  9.             result = i
  10.         else:
  11.             result = i + 1 / result
  12.         i -= 1
  13.     print(result)

  14. py203(1)
  15. py203(2)
  16. py203(3)
  17. py203(4)
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
冬雪雪冬 + 3 + 3

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 15:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表