新手·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