新手·ing 发表于 2017-4-1 20:38:16

99592938 发表于 2017-4-1 20:33


谢谢支持
回答正确

jerryxjr1220 发表于 2017-4-1 20:39:10

def calc(n):
        return sum()
print calc(int(raw_input('Input a number:')))

冬雪雪冬 发表于 2017-4-1 20:40:04

新手·ing 发表于 2017-4-1 20:37
厉害啊

python原生的支持分数和复数等数字类型,对数学运算很有利。

xunzhao 发表于 2017-4-1 21:30:19

冬雪雪冬 发表于 2017-4-1 19:54
写个简单的。

版主果然是版主

18813034116 发表于 2017-4-2 12:52:51

#coding=cp936
from __future__ import division
def together(x,y):
    y+=1/x
    x-=2
    return (x,y)
#两函数的共同代码

def fun1(n):
    sum=0
    while n!=0:
      sum=together(n,sum)
      n=together(n,sum)
    return sum
#计算偶数所需调用的函数

def fun2(n):
    sum=0
    while n!=-1:
      sum=together(n,sum)
      n=together(n,sum)
    return sum
#计算奇数所需调用的函数
      
try :
    num=int(raw_input('请输入一个非零数:'))
except ValueError:
    num=int(raw_input('您输入的不是非零数,请重新输入:'))
ifnum == 0:
    num=int(raw_input('您输入的不是非零数,请重新输入:'))
#进行输入值的类型判断
   
if num%2==0:
    print(fun1(num))
#为偶数时的结果
else:
    print(fun2(num))
#为奇数时的结果

哨子1122 发表于 2017-4-2 15:10:34

好人

哨子1122 发表于 2017-4-2 15:39:57

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

为什么我运行你的代码结果是0呢

一把钢刀斗群魔 发表于 2017-4-2 15:45:29

n = input("请输入")
def dealodd(n):
    sum1=0
    if n==2:
      sum1=1/2
    else :
       sum1 += 1/n+dealodd(1/(n-2))
    return sum1

def deale(n):
   sum1=0
    if n<=1:
      sum1=1
      else :
       sum1 += 1/n+deale(1/(n-2))
    return sum1
   
if n%2==0:
    print(dealodd(n))
else:
    print(deale(n))

18813034116 发表于 2017-4-2 15:50:50

哨子1122 发表于 2017-4-2 15:39
为什么我运行你的代码结果是0呢

因为你的Python版本是Python2,在Python2中3/2=1,1/2=0,直接取整数部分
想改进可以在开始时加一句:
from __future__ import division
#每个下划线都是双下滑线

哨子1122 发表于 2017-4-2 15:58:27

加上就好了 。非常感谢

yuclta 发表于 2017-4-2 16:03:25

运行25楼的程序显示如下:
Traceback (most recent call last):
File "C:\Python34\Untitled2.py", line 26, in <module>
    num=int(raw_input('请输入一个非零数:'))
NameError: name 'raw_input' is not defined

新手·ing 发表于 2017-4-2 16:06:32

yuclta 发表于 2017-4-2 16:03
运行25楼的程序显示如下:
Traceback (most recent call last):
File "C:\Python34%untitled2.py", lin ...

你用的到底是什么版本

灵饕餮 发表于 2017-4-2 16:14:43

#1
def a():
    x = int(input("number"))
    sum = 0
    while x%2 == 0:
      sum += 1/x
      x -= 2
      if x <= 0:
            break
    while x % 2 != 0:
      sum += 1/x
      x -= 2
      if x <= 0:
            break

    print(sum)

#2
def b():
    x = int(input("number"))
    list = []
    while x%2 == 0:
      list.append(1/x)
      x -= 2
      if x <= 0:
            break

      list.append(1/x)
      x -= 2
      if x <= 0:
            break

    result = sum(list)
    print(result)

好像第一种这样写会被人吐槽是吧,改变了bif函数了 小白请大神指导点评下 {:9_241:}

哨子1122 发表于 2017-4-2 16:29:08

一把钢刀斗群魔 发表于 2017-4-2 15:45
n = input("请输入")
def dealodd(n):
    sum1=0


为什么在循环调用dealodd的时候参数要用1/(n-2)而不是直接用n-2

elbert 发表于 2017-4-2 18:21:35

def f(n):
        if n%2 == 0:
                i = n
                s = 0
                while i >0:
                        s =s+ (1/i)
                        i = i-2
                return s
               
        else :
                j = n
                s = j
                while j >=0:
                        s = s+1/j
                        j = j-2
                return s
               
n = int (input(("please input:")))
print (f(n))

VitoHuang 发表于 2017-4-3 00:44:40

def sum(min,max):
        score = 0
        title = ''
        for i in range(min,max+2,2):
                score = score + 1 / i
                title = title + '1/'+str(i)
                if(i != max):
                        title = title + '+'
        print(title+"="+str(score))

if __name__ == '__main__':
        temp = input('输入一个数字')
        num = int(temp)
        if num % 2 == 0:
                sum(2,num)
        else:
                sum(1,num)

yjq随风 发表于 2017-4-3 09:45:15

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

都是大神啊   、

潜力 发表于 2017-4-3 12:33:16

看看

cailiao 发表于 2017-4-3 17:03:44

向各位学习!

小烯 发表于 2017-4-4 22:43:04

答案:
def summarize(n):
    result = 0
    if n%2 != 0:
      for i in range(1,n+1,2):
            result =result + 1.0/i
      return result
    else:
      for i in range(2,n+1,2):
            result = result + 1.0/i
      return result
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: Python:每日一题 15(答题领鱼币)