Python 变量n作为for循环的上界

Python 变量n作为for循环的上界,python,iteration,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。这是否可行(修改或不修改)?我必须做字符串转换吗 编辑:哇,我把这个问题写得很糟糕。我想睡眠毕竟很重要 假设我有一个函数f(x),其中

我想用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。这是否可行(修改或不修改)?我必须做字符串转换吗

编辑:哇,我把这个问题写得很糟糕。我想睡眠毕竟很重要

假设我有一个函数f(x),其中

那么f(n)就是

如果我用上面的for循环计算结果(这是由于睡眠剥夺造成的混乱),我会输入f(1),f(2),f(3),。。。到上面的for循环。我在问我是否可以在上面的for循环中输入n,修改或不修改,然后得到n^2

(f(1),f(2)之间的关系,…这与我现在遇到的问题不同-我只是想知道这个想法是否可能,如果可能,如何。如果我直接问这个问题,我不会学到任何东西,是吗?)

edit2:上述算法的输入/输出示例:

(整数输入)

(浮点输入)

(字符串输入-不首先为这些字符串指定整数/浮点值)

我的目标是对上面的循环进行修改,以便我可以这样做,对于f(a),其中f是上面的函数:

def g(a):
    return f(a)
或其等效物


我就把这个放在这里,因为我现在看起来不像是一个睡眠不足的大学生,更像是一个睡眠不足的弱智大学生。

你想做点什么像
def('123')

如果是,请先将字符串强制转换为int,然后再在
范围内使用它,例如:

for i in range(0,int(x)):
你写道:

(字符串输入-不首先为这些字符串指定整数/浮点值)

因此,您有一些变量(
a
df
空载吞咽的速度
),它们在调用
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.

你会通过什么?举个例子吧?什么样的字符串?你能举一个这样的例子吗?注意:为什么全球
p
?当你有效地返回
x**2
时,为什么循环会超出范围?在原始帖子中添加了关于问题的更多细节。是否确实需要循环p应该简单地更新为p+=x,假设x转换为intThank,但我恐怕这不是我要找的。我正在寻找一个函数f(x)的循环的修改,它没有给我错误
NameError:name'n'没有定义
,当您尝试将字符串直接放入函数时,当我尝试放入f(n)时,会发生这种情况。不管怎样,这个问题是解析解的,所以我想我只是把f(x)=(解析解)作为一种答案。无论如何谢谢你!如果您能为函数添加一个调用示例以及所需的返回值,这将非常有用。我不知道你说的f(n)是什么意思,也不知道你说的解析解是什么意思。你能给出一个输入/输出的具体例子吗?增加了一些例子,并对我的目标做了另一个(希望更好)的解释。(当我说‘解析解’时,我指的是我用传统的纸笔方法找到的f(x)),你写字符串输入,而不是先给这些字符串赋值。但是字符串是不可变的,所以不能将某些内容分配给字符串。我假设您是指一个变量,并且希望以某种方式将变量引用传递给函数,以便在变量具有有意义的值后,您可以稍后获得结果。我重写了我的答案。也许这就是你想要的?
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
def g(a):
    return f(a)
for i in range(0,int(x)):
f(a) = a^2
f(df) = (df)^2
f(the_speed_of_an_unladen_swallow) = (the_speed_of_an_unladen_swallow)^2
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.