如何在Python中执行字符串中每个字母对应的函数?
How to, in Python, execute function corresponding to each letter in a string?
比如说,例如,在 tkinter 中,有人创建了一个函数,对应于英文字母表的 26 个字母中的每一个。然后,he/she希望能够将用户提供的一个字符串,将所有的大写字母转为小写,然后执行该字符串的每个字母对应的函数。这是我正在谈论的伪代码示例:
# The functions should draw, on a tkinter canvas, the letter each function corresponds to (a pseudocode example shown below):
a -> draw_a
b -> draw_b
c -> draw_c
d -> draw_d
# So on, so forth...
str = input('Enter a string please: ').lower()
for i in str:
if i is # a letter:
# execute function corresponding to current letter in string
else:
pass # If current character is not a letter
是否可以在 Python 中执行此操作?如果是这样,我将如何实现此功能?
使用字典将字母映射到函数:
def draw_a(): # ...
def draw_b(): # ...
per_letter = {
'a': draw_a, 'b': draw_b, # ...
}
for char in string:
if char.isalpha():
per_letter[char]()
请注意,函数对象放在字典中,它们不会被调用,直到我们用per_letter[char]
在字典中查找它们。[=12] =]
我假设您想要以下内容:
如果你有 'a',请调用函数 draw_a
在这种情况下,您可以使用:
letter='a'
locals()["draw_"+letter]()
或者,在您的情况下:
for i in str:
if i is # a letter:
locals()["draw_"+i]()
else:
pass # If current character is not a letter
locals()
是一个包含所有已定义函数和一些其他内容的字典。
调用 locals()["draw_a"]
returns 函数 draw_a
作为变量,然后使用 ()
执行
比如说,例如,在 tkinter 中,有人创建了一个函数,对应于英文字母表的 26 个字母中的每一个。然后,he/she希望能够将用户提供的一个字符串,将所有的大写字母转为小写,然后执行该字符串的每个字母对应的函数。这是我正在谈论的伪代码示例:
# The functions should draw, on a tkinter canvas, the letter each function corresponds to (a pseudocode example shown below):
a -> draw_a
b -> draw_b
c -> draw_c
d -> draw_d
# So on, so forth...
str = input('Enter a string please: ').lower()
for i in str:
if i is # a letter:
# execute function corresponding to current letter in string
else:
pass # If current character is not a letter
是否可以在 Python 中执行此操作?如果是这样,我将如何实现此功能?
使用字典将字母映射到函数:
def draw_a(): # ...
def draw_b(): # ...
per_letter = {
'a': draw_a, 'b': draw_b, # ...
}
for char in string:
if char.isalpha():
per_letter[char]()
请注意,函数对象放在字典中,它们不会被调用,直到我们用per_letter[char]
在字典中查找它们。[=12] =]
我假设您想要以下内容:
如果你有 'a',请调用函数 draw_a
在这种情况下,您可以使用:
letter='a'
locals()["draw_"+letter]()
或者,在您的情况下:
for i in str:
if i is # a letter:
locals()["draw_"+i]()
else:
pass # If current character is not a letter
locals()
是一个包含所有已定义函数和一些其他内容的字典。
调用 locals()["draw_a"]
returns 函数 draw_a
作为变量,然后使用 ()