菠萝蜂蜜 发表于 2017-4-5 10:34:27

def peven(n):
    i = 0
    s = 0.0
    for i in range(2,n + 1,2):
      s += 1.0 / i
    return s


def podd(n):
    s = 0.0
    for i in range(1, n + 1,2):
      s += 1 / i
    return s


def dcall(fp,n):
    s = fp(n)
    return s


if __name__ == '__main__':
    n = int(input('input a number:\n'))
    if n % 2 == 0:
      sum = dcall(peven,n)
    else:
      sum = dcall(podd,n)
    print (sum)

Deast 发表于 2017-4-5 12:44:42

看看

shigure_takimi 发表于 2017-4-5 14:35:56

本帖最后由 shigure_takimi 于 2017-4-5 14:38 编辑

def f(n):
    if n > 0:
      total = 0
      if n % 2 == 0: #偶数
            for i in range(2, n + 1, 2):
                total += 1 / i
      else:
            for i in range(1, n + 1, 2):
                total += 1 / i
      return total
    else:
      return None


for i in range(11):
    print(i, f(i))

##    Output:
##      0 None
##      1 1.0
##      2 0.5
##      3 1.3333333333333333
##      4 0.75
##      5 1.5333333333333332
##      6 0.9166666666666666
##      7 1.676190476190476
##      8 1.0416666666666665
##      9 1.7873015873015872
##      10 1.1416666666666666

shigure_takimi 发表于 2017-4-5 14:41:39

def f(n):
    if n > 0:
      total = []
      if n % 2 == 0: #偶数
            for i in range(2, n + 1, 2):
                total.append('1/'+str(i))
      else:
            for i in range(1, n + 1, 2):
                total.append('1/'+str(i))
      return '+'.join(total)
    else:
      return None


for i in range(11):
    print(i, f(i))

##>>>
##    0 None
##    1 1/1
##    2 1/2
##    3 1/1+1/3
##    4 1/2+1/4
##    5 1/1+1/3+1/5
##    6 1/2+1/4+1/6
##    7 1/1+1/3+1/5+1/7
##    8 1/2+1/4+1/6+1/8
##    9 1/1+1/3+1/5+1/7+1/9
##    10 1/2+1/4+1/6+1/8+1/10

风高物燥 发表于 2017-4-5 16:52:55

新手上路几节课,请多多指教,希望能得到鱼币{:10_254:}
def sum1(n):
    a=0
    if n%2 == 0:
      i=2
      for i in range(2,n+1,2):
            a+=1/i
            i+=2
    else:
      i=1
      for i in range(1,n+1,2):
            a+=1/i
            i+=2
    return a

shigure_takimi 发表于 2017-4-5 17:14:07


楼主同志,我是自己答的题。
第二次上传是把结果改成了分数连加的形式。

新手·ing 发表于 2017-4-5 17:21:09

shigure_takimi 发表于 2017-4-5 17:14
楼主同志,我是自己答的题。
第二次上传是把结果改成了分数连加的形式。

{:10_250:}我错了

271298902 发表于 2017-4-7 12:47:11

看看

AllenYJR 发表于 2017-4-7 17:45:17

def py():
    a = int(input('输入数字:'))
    for i in range(2,a+2,2):
      b = 0
      b += 1/i
    print(b)

py()

wang12580 发表于 2017-4-8 10:44:36

^_^

lumber2388779 发表于 2017-4-10 19:35:22

def func(n):
    sumnum = 0
    if n%2:
      for i in range(1,n+1,2):
            sumnum += 1/i
    else:
      for i in range(2,n+1,2):
            sumnum += 1/i
    return sumnum
n = int(input('请输入一个正整数:'))
print('结果是:',func(n))


{:10_269:}每次发现冬雪的都好简便

新手·ing 发表于 2017-4-10 19:39:20

lumber2388779 发表于 2017-4-10 19:35
每次发现冬雪的都好简便

他(她)算法太6了

余欲渔 发表于 2017-4-11 21:56:24

n=int(input('输入一个数:'))
print()

余欲渔 发表于 2017-4-11 22:00:55

看了看上面有人说不能分数形式表示,不够精确,那只能来个精确的{:5_98:}
n=int(input('输入一个数:'))
print('+'.join(['1/'+str(i) for i in range(1 if n%2 else 2,n+1,2)]))
RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\test.py
输入一个数:8
1/2+1/4+1/6+1/8
>>>
RESTART: C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\test.py
输入一个数:7
1/1+1/3+1/5+1/7
>>>

奔跑的小鱼 发表于 2017-4-14 09:42:36

def tes(n):
    c=0
    while n>0:
      a = 1 / n
      c=a+c
      n-=2
    return c

奔跑的小鱼 发表于 2017-4-14 09:42:59

奔跑的小鱼 发表于 2017-4-14 09:42
def tes(n):
    c=0
    while n>0:


新人,第一次写个试试{:5_91:}

rosen 发表于 2017-4-15 22:18:53

class Calculate:
      def calculate(self,value):
                self.value = value
                result = 0
                for i in range(1,1+int(self.value)//2):
                        if int(self.value)%2 == 0:
                              result += 1/2*i
                              print('the result is:%f'%result)
                        else:
                              result += 1/(2*i+1)
                              print('the result is:%f'%result)


还能领币不。。{:5_91:}

tianrandai 发表于 2017-4-20 10:02:47

def jioushu(n):
    sum = 0
    for i in range(n,0,-2):
      sum+=1/i
    return sum
num=int(input('请输入一个数字:'))
result=jioushu(num)
print(result)

aopgirl 发表于 2017-4-20 15:00:04

试试试试

asgs_fishc 发表于 2017-4-25 18:04:56

num = input('请输入一个数')
number = int(num)
sum = 0
if number % 2 == 1:
    for i in range(2, n, 2):
      sum += 1/i
else :
   for i in range(1, n, 2):
      sum += 1/i
print(sum)
页: 1 2 [3] 4 5 6 7 8 9 10 11 12
查看完整版本: Python:每日一题 15(答题领鱼币)