变量n作为for循环的上限

时间:2016-09-17 10:14:47

标签: python iteration

我想用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)

或其等价物。

我要离开这里,因为我看起来不像一个睡眠不足的单身学生,更像是一个睡眠不足的弱智学生。

2 个答案:

答案 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

因此,您有变量(adfthe_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.