我相信我明白你在这里想要什么。您希望能够呼叫program
,以便在字符串中的每个字符上运行ord
,但是您还希望能够对字符串中的每个字符运行(例如)chr
,而无需创建称为program_chr
的全新函数。
很高兴,Python支持first-class functions,所以这是绝对有可能的。您可以将函数作为参数传递给program
,就像传递字符串一样简单。
def program (my_str, my_fn):
i = 0
message = []
while i<len(my_str):
message.append(my_fn(my_str[i]))
i += 1
print(message)
program("my_string", ord)
此输出[109, 121, 95, 115, 116, 114, 105, 110, 103]
,没有ord
曾经出现在program
!
可以使用任何功能对于这一点,包括您自己定义:
def silly_fn (char):
return 12
program("my_string", silly_fn)
此输出[12, 12, 12, 12, 12, 12, 12, 12, 12]
。
相关注:我改变了参数str
到my_str
,因为str
是一个内置的功能,它的重新定义那些没有很好的理由从来没有很好的做法!
什么shoukd的PROGRAMM到底如何呢? –
正如您从3种截然不同的答案中可以看出的那样,您的问题与书面内容相当不清楚。考虑对其进行编辑以使其更加明显,正是您所期待的(一个好的开始是包括示例输入和期望的输出)。 – KernelPanic