我是Python新手并尝试创建一个用户界面,其中包含插入,删除和更新数据的选项。数据将在文本文件中处理。我想接受用户的选项并调用各自的功能来进行活动。我发现的一个替代方案是声明字典 整个代码是:
print("Select options from below")
dict_options = {'1' : 'Insert',
'2' : 'Update',
'3' : 'Delete',
'4' : 'Display_number_of_records',
'5' : 'Display_all_records',
'6' : 'Exit'}
for key in dict_options.keys():
value = dict_options.get(key)
print(str(key) + ". " + value)
option = input("Enter an option : ")
while (option != '6'):
value = dict_options.get(option)
dict_options[option]()
option = input("Enter an option : ")
def Insert():
print("Insert a record")
return`enter code here`
当我执行时,它给了我一个错误:
TypeError: 'str' object is not callable at dict_options[option]()
答案 0 :(得分:3)
字符串,例如dict_options[option]
,不可调用,但函数是。因此,将dict_options
值设为函数对象:
变化
dict_options = {'1' : 'Insert',
'2' : 'Update',
'3' : 'Delete',
'4' : 'Display_number_of_records',
'5' : 'Display_all_records',
'6' : 'Exit'}
到
dict_options = {'1' : Insert,
'2' : Update,
'3' : Delete,
'4' : Display_number_of_records,
'5' : Display_all_records,
'6' : Exit}
请注意,您必须在定义dict_options
之前定义函数。
此外,要打印该功能的名称,请将value
更改为value.__name__
:
for key in dict_options.keys():
value = dict_options.get(key)
print(str(key) + ". " + value)
变为
for key in dict_options.keys():
value = dict_options.get(key)
print(str(key) + ". " + value.__name__)
答案 1 :(得分:1)