繁体   English   中英

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

[英]How to, in Python, execute function corresponding to each letter in a string?

例如,在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中执行此操作? 如果是这样,我将如何实施此功能?

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

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]

我假设您需要以下内容:

如果您有一个“ 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作为变量,然后使用()执行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM