如何在Python中执行字符串中每个字母对应的函数?

问题描述 投票:0回答:3

例如,在 tkinter 中,有人创建了一个与英文字母表中 26 个字母相对应的函数。然后,他/她希望能够获取用户提供的字符串,将所有大写字母变为小写,然后执行与该字符串的每个字母对应的函数。这是我正在谈论的一个伪代码示例:

# 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中做到这一点吗?如果是这样,我该如何实现这个能力?

python string function tkinter python-3.5
3个回答
3
投票

使用字典将字母映射到函数:

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]
在字典中查找它们。


1
投票

我假设您想要以下内容:

如果有“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"]
将函数
draw_a
作为变量返回,然后使用
()

执行该函数

0
投票

如果您希望字母并排打印怎么办?

© www.soinside.com 2019 - 2024. All rights reserved.