Python—一个系列中添加的最大项数,即总和<;5.
嗨,有人问我以下问题: 以这个系列为例 总计=1/1+1/2+1/3+1/4+1/5….+1/N 使总数小于5.0的最大添加项数(即N值)是多少? (写几行Python代码,当总和刚好小于5.0时停止) 到目前为止,我就是这么做的:Python—一个系列中添加的最大项数,即总和<;5.,python,Python,嗨,有人问我以下问题: 以这个系列为例 总计=1/1+1/2+1/3+1/4+1/5….+1/N 使总数小于5.0的最大添加项数(即N值)是多少? (写几行Python代码,当总和刚好小于5.0时停止) 到目前为止,我就是这么做的: m = 5 n= 0 u = 1 sum_serie = 0 for u in range(1,100): u = 1/(n+1) n= n+1 while u < m: sum_serie = sum_serie + u
m = 5
n= 0
u = 1
sum_serie = 0
for u in range(1,100):
u = 1/(n+1)
n= n+1
while u < m:
sum_serie = sum_serie + u
print(sum_serie)
print(n)
m=5
n=0
u=1
总和=0
对于范围(1100)内的u:
u=1/(n+1)
n=n+1
而u
它不起作用。有人能解释一下吗?有没有更简单的方法?
谢谢这可能是正确的版本:
m = 5
n = 0
sum_series = 0
while sum_series < m:
u = 1. / (n + 1)
sum_series = sum_series + u
n = n + 1
print(sum_series)
print(n)
首先,您的
while
循环应该具有条件sum\u serie
和partsu=1(n+1)
和n=n+1
应在该循环内,如图所示。for
循环无法执行您需要的操作,因此它已被删除。要循环到刚好低于限制的数字,只需将限制作为循环条件进行检查(此处在awhile
中),并更改循环内的值。有点像
limit = 5
n = 0
sum_serie = 0
while sum_serie + 1./(n+1) < limit:
sum_serie += 1./(n+1)
n += 1
print(sum_serie)
print(n)
len(list(itertools.takewhile(lambda n:n<5.0,itertools.accumulate(itertools.count(1),lambda x,y:x+1/y)))
BOOM~~只是想知道u=1时1处的点的用途是什么(n+1)?@Hannah它使它成为一个浮点
。如果它说1.0
可能更清楚,但它的意思是在较新版本的Python中1/2
是0.5
,但较旧版本的1/2
是0
。点使分子成为浮点数,因此1./2
是0.5
。为什么结果>5?难道不是吗
limit = 5
n = 0
sum_serie = 0
while sum_serie + 1./(n+1) < limit:
sum_serie += 1./(n+1)
n += 1
print(sum_serie)
print(n)
4.9900200799090815
82