鱼C论坛

 找回密码
 立即注册
查看: 16401|回复: 221

[技术交流] Python:每日一题 15(答题领鱼币)

  [复制链接]
发表于 2017-4-1 18:44:09 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 新手·ing 于 2017-4-1 19:28 编辑

题目编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n
程序分析

如果你认真答题,会得到鱼币奖励!!!
                      如果你认真答题,会得到鱼币奖励!!!
                                              如果你认真答题,会得到鱼币奖励!!!


欢迎小伙伴们,一起答题!
如果你有能力,欢迎加入我们!
已经上车老司机:@ooxx7788 @lumber2388779   
点我上车   

游客,如果您要查看本帖隐藏内容请回复

本帖被以下淘专辑推荐:

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

使用道具 举报

 楼主| 发表于 2017-4-1 18:44:34 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 19:26:40 | 显示全部楼层
我输入,运行后显示无效语法。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-1 19:28:37 | 显示全部楼层
yuclta 发表于 2017-4-1 19:26
我输入,运行后显示无效语法。

感谢你提出问题,我没有隐藏代码...
现在没问题了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 19:54:43 | 显示全部楼层
写个简单的。
  1. num = int(input('请输入数字:'))
  2. print(sum([1 / i for i in range(num, 0, -2)]))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 5 反对 0

使用道具 举报

 楼主| 发表于 2017-4-1 20:01:12 | 显示全部楼层

编写一个函数...
冬雪大大要认真读题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-1 20:02:17 | 显示全部楼层

但是还是学习了..大佬就是大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 20:07:41 | 显示全部楼层
新手·ing 发表于 2017-4-1 20:01
编写一个函数...
冬雪大大要认真读题

太粗心了,重新改过。
  1. def sum1(n):
  2.     return sum([1 / i for i in range(n, 0, -2)])

  3. if __name__ == '__main__':
  4.     num = int(input('请输入数字:'))
  5.     print(sum1(num))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2017-4-1 20:14:37 | 显示全部楼层
冬雪雪冬 发表于 2017-4-1 20:07
太粗心了,重新改过。

还是可怕...
厉害!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 20:18:51 | 显示全部楼层
不能显示为分数,不精确
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-4-1 20:19:37 | 显示全部楼层
gopythoner 发表于 2017-4-1 20:18
不能显示为分数,不精确

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

使用道具 举报

发表于 2017-4-1 20:22:36 | 显示全部楼层
这个题直接做的话,很简单,但是我觉得不能以分数的形式进行运行,从数学的意义来讲,不够精确
  1. def test15(n):
  2.     s = 0
  3.     if n%2 ==0:
  4.         for i in range(1,n+1):
  5.             if i%2 ==0:
  6.                 num = 1/i
  7.                 s =s + num
  8.         print(s)
  9.     else:
  10.         for i in range(1,n+1):
  11.             if i%2 !=0:
  12.                 num = 1/i
  13.                 s =s + num
  14.         print(s)

  15. if __name__ == '__main__':
  16.     test15(49)
复制代码

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
新手·ing + 2 + 2 Python不支持.没办法...

查看全部评分

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

使用道具 举报

发表于 2017-4-1 20:23:30 | 显示全部楼层


你这个就有点欺负人了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 20:25:45 | 显示全部楼层
gopythoner 发表于 2017-4-1 20:23
你这个就有点欺负人了

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

使用道具 举报

发表于 2017-4-1 20:26:03 | 显示全部楼层
  1. 2.591226249452671
  2. 2.5912262494526717
复制代码


为什么用我的函数和你的函数得到的数值的精确度会不一样?
上面一个是我的,下面一个是你的,num=49算的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 20:33:17 | 显示全部楼层
  1. def f_even(x):
  2.     result=0
  3.     for i in range(2,x+1,2):
  4.         result+=1/i
  5.     return result

  6. def f_odd(x):
  7.     result=0
  8.     for i in range(1,x+1,2):
  9.         result+=1/i
  10.     return result

  11. num=int(input('请输入一个整数:'))
  12. if num%2:
  13.     print(f_odd(num))
  14. else:
  15.     print(f_even(num))
复制代码

评分

参与人数 1荣誉 +3 鱼币 +3 收起 理由
新手·ing + 3 + 3 支持楼主!

查看全部评分

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

使用道具 举报

发表于 2017-4-1 20:34:03 | 显示全部楼层
gopythoner 发表于 2017-4-1 20:22
这个题直接做的话,很简单,但是我觉得不能以分数的形式进行运行,从数学的意义来讲,不够精确

写个分数版的。
  1. from fractions import Fraction
  2. def sum1(n):
  3.     return sum([Fraction(1, i) for i in range(n, 0, -2)])

  4. if __name__ == '__main__':
  5.     num = int(input('请输入数字:'))
  6.     print(sum1(num))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 2 反对 1

使用道具 举报

发表于 2017-4-1 20:37:04 | 显示全部楼层
gopythoner 发表于 2017-4-1 20:26
为什么用我的函数和你的函数得到的数值的精确度会不一样?
上面一个是我的,下面一个是你的,num=49 ...

还是系统的误差,可能我的是从大到小算的,你的是从小到大算的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-4-1 20:37:29 | 显示全部楼层
num = int(input('请输入数字:'))
print(sum([1 / i for i in range(num, 0, -2)]))

评分

参与人数 1荣誉 -2 鱼币 -2 收起 理由
新手·ing -2 -2 希望能够自己思考!

查看全部评分

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

使用道具 举报

 楼主| 发表于 2017-4-1 20:37:43 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 22:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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