如何制作';i';python中的函数数量?

如何制作';i';python中的函数数量?,python,Python,我正在尝试使用Python中的大量类似函数执行for循环: i = int(raw_input()) for i in range (0, i): myfunction[i] = str(raw_input()) 我得到一个未定义的错误。所以我在定义它。。。。如何定义[I]个类似函数?myfunction[I]是列表myfunction中的第I个元素,您尚未定义该元素;因此出现了错误 如果需要一系列函数,可以尝试以下方法: def myfunction(i,x): if i==0:

我正在尝试使用Python中的大量类似函数执行for循环:

i = int(raw_input())
for i in range (0, i):
  myfunction[i] = str(raw_input())

我得到一个未定义的错误。所以我在定义它。。。。如何定义[I]个类似函数?

myfunction[I]
是列表
myfunction
中的第I个元素,您尚未定义该元素;因此出现了错误

如果需要一系列函数,可以尝试以下方法:

def myfunction(i,x):
    if i==0:
        return sin(x)
    elif i==1:
        return cos(x)
    elif i==2:
        return x**2
    else:
        print 'Index outside range'
        return
如果您需要与
i
相关的类似函数,它会变得更简单,如以下示例所示:

def myfunction(i,x):
    return x**i

无法按索引设置列表项,请尝试:

myfunction = []
for i in range(0, 5):
    myfunction.append(whatever)

larsmans的答案也可以通过以下方式实现:

def make_function(x):
    def function(y):
        return x + y
    return function

functions = [make_function(i) for i in xrange(5)]

# prints [4, 5, 6, 7, 8]
print [f(4) for f in functions]
已更新

从编辑和所有注释中,似乎您希望向用户请求一个数字N,然后请求N个字符串,并将它们放入列表中

i = int(raw_input('How many? '))
strings = [raw_input('Enter: ') for j in xrange(i)]
print strings
运行时:

How many? 3
Enter: a
Enter: b
Enter: c
['a', 'b', 'c']
如果列表理解对您来说似乎不可读,以下是您在没有它的情况下的操作方法,并附有一些注释:

i = int(raw_input('How many? '))
# create an empty list
strings = []
# run the indented block i times
for j in xrange(i):
    # ask the user for a string and append it to the list
    strings.append(raw_input('Enter: '))
print strings

我不确定你想要什么,但从你所说的,我觉得很简单:

def myfunction(j):
    for i in range(j):
        variable.append(raw_input('Input something: '))

我仍然认为这可能不是你想要的。如果我错了,请纠正我,请说清楚一点。

您需要澄清,这些函数的目的是什么?如果函数需要做不同的事情,那么您仍然需要手动编写它们,这使它们更加“个性化”。请放松,谢谢+1.这些函数设置一个文本值。所需的结果是一个变量,变量[i],用字符串填充。我应该编辑吗?您希望myfunction[I]是函数还是字符串?它们是用户输入的结果。它们是字符串,但它们是函数
raw\u input()
[1],
raw\u input()
[2]…这些是字符串,不是函数。是否只想向列表中添加字符串?列表当然可以包含函数。试试
[map,zip,reduce]
@Abhranil,我没有拒绝你,伙计。不过,我认为这违背了目的。这个想法是要有
i
定义。创建的定义数由用户输入的
i
值定义。它不应该手工编码。让我重新表述我的问题。我想只是沟通障碍没关系,没问题。但是如果你想要一类与
i
有关的函数,我的定义很容易修改。Abhranil,我正在尝试基于
raw\u input()
s执行类似的定义。i结果:
i=5;对于范围(0,i)中的i,我的结果0=原始输入();my_result1=原始输入();my_result2=原始输入();my_result4=原始输入()。可能有比在每个变量名的末尾添加
i
或索引更好的方法。也许是财产什么的。我不确定。我是个初学者。
AttributeError:'list'object attribute'append'是只读的
你在做
myfunction append=x
而不是
myfunction.append(x)
?我在做
myfunction.append=raw\u input()
。你能告诉我如何引用它吗<代码>打印我的函数[i,j]
这就是我应用你的答案的地方(广义形式,我的答案):我明白你的意思。非常感谢。对不起,但prez抢先了你一步。回答得好。