我正在尝试获取用户输入,然后将其存储在列表中
现在我要做的是,根据该列表中的第[i]个值调用特定的函数
例如
my_list[0]
的值为'a'
,然后我要调用我已经定义的function_a()
my_list[1]
的值'b'
存储在该索引处,然后我想再次调用function_b
function_b已被定义
基本上,
我想查看该列表中的值是否与我的任何函数匹配,然后我要触发该函数
详细示例:
user_input : 'text'
list = []
for i in user_input:
list.append[i]
所以我的列表变成了['t','e','x','t']
现在
我对每个字母都有特定的功能
(我想我应该有字典或键是字母,值是各自功能的东西,我不知道那是否就是phaaaasssibbble)
但是我想按照列表中的这些值调用这些函数
所以在这里我希望我的程序调用
function_t
function_e
function_x
function_t
答案 0 :(得分:1)
这是一个非常简单的示例。您可以使用字母作为键,使用function object
作为值来制作地图。即您不想调用地图中已经存在的函数。仅在用户调用它时调用它。
def a_func():
print("calling a_func")
def b_func():
print("calling b_func")
def c_func():
print("calling c_func")
func_map = {'a': a_func, 'b':b_func, 'c':c_func}
while True:
func_input = input("Enter a letter 'a' through 'c'!\n")
if func_input.strip() == 'exit':
print('goodbye! ')
exit()
if func_input.strip() in func_map.keys():
func_map[func_input]()
else:
print("Sorry no function for that!")
以下是输出:
Enter a letter 'a' through 'c'!
a
calling a_func
Enter a letter 'a' through 'c'!
b
calling b_func
Enter a letter 'a' through 'c'!
c
calling c_func
Enter a letter 'a' through 'c'!
d
Sorry no function for that!
Enter a letter 'a' through 'c'!
exit
goodbye!
答案 1 :(得分:0)
更好的是,这样的字典已经免费提供。如果您的脚本的全局名称空间中有一个函数:
def func_k():
然后在全局名称空间中
locals()['func_k']
将获得您的功能,并且
locals()['func_k']()
会调用它。给定letter=k
,
locals()['func_'+letter]()
也可以。最后,请注意字符串已经可以迭代。将所有这些与一些错误检查结合起来并得到:
for letter in input:
try:
locals()['func_'+letter]()
except KeyError:
print('-E-',letter,'is not a valid input!')
所有人都说过,请考虑@zvone的注释-如果该功能非常相似,则最有可能接受字母作为参数。
答案 2 :(得分:-3)
您可以像这样使用dict:
.container {
height: calc(100vh - 50px);
width: calc(100vh - 100px);
padding: 20px;
}
.draggable {
cursor: -webkit-grab;
cursor: grab;
}
.uk-input,
.uk-textarea,
.uk-checkbox {
margin-bottom: 10px;
}