鱼C论坛

 找回密码
 立即注册
查看: 3796|回复: 11

[已解决]python例题求助

[复制链接]
发表于 2022-10-13 08:46:23 | 显示全部楼层 |阅读模式
10鱼币
求数列前10项的和:s=1-1/2!+1/3!-1/4!+1/5!…  
最佳答案
2022-10-13 08:46:24
s='1-1/2!+1/3!-1/4!+1/5!'
total = 0
for i in s:
    if i.isdigit() == True:    #isdigit判断是否数字
        total += int(i)     #原为str,+会变成合并,转为int +变成运算
print(total) 

或者这样也行

最佳答案

查看完整内容

或者这样也行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 08:46:24 | 显示全部楼层    本楼为最佳答案   
s='1-1/2!+1/3!-1/4!+1/5!'
total = 0
for i in s:
    if i.isdigit() == True:    #isdigit判断是否数字
        total += int(i)     #原为str,+会变成合并,转为int +变成运算
print(total) 

或者这样也行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 09:33:53 | 显示全部楼层
s=1-1/2!+1/3!-1/4!+1/5!------1/s!这个数列?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 09:50:18 | 显示全部楼层
本帖最后由 jackz007 于 2022-10-13 09:56 编辑
def foo(n):
    s , b , f = 0 , 1 , 1
    for i in range(1 , n + 1):
        b *= i
        s , f = s + f / b , -f
    return s

print(foo(10))
        运行结果:
D:\[00.Exerciese.2022]\Python>python x.py
0.6321205357142857

D:\[00.Exerciese.2022]\Python>
        这个对吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 09:52:56 | 显示全部楼层
s='1-1/2!+1/3!-1/4!+1/5!'
ls = []
for i in s:
    if i.isdigit() == True:    #isdigit判断是否数字
        ls.append(int(i))      #原为str,加入转为int方便统计
print(sum(ls))                  #sum能求list和

输出
19

是这个意思吗  你的题目不太清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 10:17:04 | 显示全部楼层

       10! 是 10 的阶乘的意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 10:23:52 | 显示全部楼层
s = 0
a = 1
n = 10
for i in range(1,n+1):
    a = a*i
    if i%2 == 0:
        s = s - 1/a
    else:
        s = s + 1/a
print(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 10:35:59 | 显示全部楼层
import math

'''
s=1-1/2!+1/3!-1/4!+1/5!…  
求前10项目,那么n=10,
通过这个数列可观察到,偶数的减,奇数的是加,
于是我就设置2个变量分别接收前10项偶数的结果,与奇数的结果,最后在进行计算
我这里阶乘算法是使用的math模块中的factorial函数
'''

num01 = 0  # 接收数列中所有偶数的和
num02 = 0  # 接收数列中所有奇数的和
for i in range(2,11):  # 因为是求前10项,所以就到11,又因为数列首项是1,就把1给剔除掉
    if i%2 == 0:  # 判断是否为偶数
        num_01 = 1/math.factorial(i)
        num01 += num_01
    else:
        num_02 = 1/math.factorial(i)
        num02 += num_02

sum = 1 - num01 + num02
print('数列s=1-1/2!+1/3!-1/4!+1/5!… 前10项的和为:{}'.format(sum))


运行结果为:
数列s=1-1/2!+1/3!-1/4!+1/5!… 前10项的和为:0.6321205357142857
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 10:42:29 | 显示全部楼层

其实range那个可以不用把1去掉,最后计算sum时,直接num02-num01 也是一样的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 10:55:53 | 显示全部楼层
简短一点的话
import math;print(sum([1/math.factorial(i) if i & 1 else -1/math.factorial(i) for i in range(1,11)]))
python -c 'import math;print(sum([1/math.factorial(i) if i & 1 else -1/math.factorial(i) for i in range(1,11)]))'
0.6321205357142857
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-14 19:01:16 | 显示全部楼层
def test():
        x = []
        for i in range(10):
                i += 1
                # i 为偶数
                if i % 2 == 0:
                        i = 1 / i
                x.append(i)
        return sum(x)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-14 19:16:30 | 显示全部楼层
s=0
p=-1
for i in range(1,4):
    x=1
    for j in range(1,i+1):
        x=x*j
    s=p*(-1)*1/x
print(s)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-14 22:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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