我想用for循环计算(1 + 1 + 1 + ... + 1)^ 2的总和,但是以变量n作为上限,以便求和得到函数f(n )= n ^ 2。使用非负整数x作为输入,循环可以很容易地编码为
p==0
def f(x):
global p
for i in range(0,x):
p=p+1
return p**2
我想将字符串n提供给这种循环。这是可行的(有没有修改)?我是否必须将字符串转换为hijinks和SymPy?
编辑:哇我说这个问题真的很糟糕。毕竟猜测睡眠很重要
假设我有一个函数f(x),其中
f(1) = 1
f(2) = f(1+1) = (1+1)^2 = 4
f(3) = f(1+2*1) = (1+2)^2 = 9
然后,f(n)将是
f(n) = f(1+(n-1)*1) = (1+(n-1))^2 = n^2
如果我用上面的for循环计算结果(由于睡眠剥夺而导致混乱),我输入f(1),f(2),f(3),...到上面的for循环。我问我是否可以在上面的for循环中输入n,无论是否有修改,并得到n ^ 2.
(f(1),f(2)之间的关系,......这里与我现在遇到的问题不一样 - 我只是想知道这个想法是否可行如果是的话,怎么样。如果我直接问这个问题,我什么都学不会,是吗?)
edit2:使用上述算法的输入/输出示例:
(整数输入)
f(1) = 1^2
f(2) = 2^2
f(423) = 423^2
(浮动输入)
f(0.5) = (0.5)^2
f(1.5) = (1.5)^2
f(234.23) = (234.23)^2
(字符串输入 - 不首先为这些字符串赋值整数/浮点值)
f(a) = a^2
f(df) = (df)^2
f(the_speed_of_an_unladen_swallow) = (the_speed_of_an_unladen_swallow)^2
我的目标是对上面的循环进行修改,以便我可以这样做,因为f(a)其中f是上面的函数:
def g(a):
return f(a)
或其等价物。
我要离开这里,因为我看起来不像一个睡眠不足的单身学生,更像是一个睡眠不足的弱智学生。
答案 0 :(得分:0)
你想做def('123')
吗?
如果是这样,在range
中使用之前将字符串转换为int,如下所示:
for i in range(0,int(x)):
答案 1 :(得分:0)
您写道:
(字符串输入 - 不首先为这些字符串赋值整数/浮点值)
f(a) = a^2 f(df) = (df)^2 f(the_speed_of_an_unladen_swallow) = (the_speed_of_an_unladen_swallow)^2
因此,您有变量(a
,df
,the_speed_of_an_unladen_swallow
),这些变量在您调用f
时尚未包含(好)值。之后,它们会有一个数值,你想在你的函数中多次循环。
由于原始数据类型的变量是按值传递的,因此您必须传递变量的名称,以执行类似的操作。
也许这是你要找的东西?
def f(x):
def localF():
return globals()[x]**2 # loop could be here, but this is the essence
return localF
# n does not have its value yet
n = None
# call f: it should not produce the result yet, as n is not correctly set yet
g = f('n')
# set n to its intended value
n = 5;
# Call the function we got from f:
print (g());
# output is 25.