调用一个';def&x27;带有';输入';用Python
我在做一个项目,有点卡住了。我希望程序的用户能够调用函数。但是用户调用它必须很容易。比如说调用一个';def&x27;带有';输入';用Python,python,function,Python,Function,我在做一个项目,有点卡住了。我希望程序的用户能够调用函数。但是用户调用它必须很容易。比如说 def definition(): print("This is a function") command = input("> ") if command == definition: definition() else: print("") 在这个函数中,我希望用户不要在输入中写入()。但我希望用户能够编写“定义”来调用函数。有人知道怎么做吗?试试这个 whitelis
def definition():
print("This is a function")
command = input("> ")
if command == definition:
definition()
else:
print("")
在这个函数中,我希望用户不要在输入中写入()。但我希望用户能够编写“定义”来调用函数。有人知道怎么做吗?试试这个
whitelist_funcs = ['definition', 'something else']
command = input("> ")
if command in whitelist_funcs:
exec(f"{command}()")
else:
print("")
您缺少来自around定义的引号,因此尝试将未声明的变量与始终等于false的输入字符串进行比较 尝试:
def定义():
打印(“这是一个函数”)
命令=输入(“>”)
如果命令=='definition':
定义()
其他:
打印(“”)
您必须使用if语句隐式定义条件
为了方便用户,您可以这样做:
def definition():
#your function here
if __name__=='__main__':
print ("Choose your option:\n1. Definition")
choice = int(input("Enter choice ")
if choice == 1:
definition ()
您混淆了函数名(代码中的可调用对象)和输入的名称 对于您的问题,我将使用函数名字典作为键,函数引用作为值
def function1():
print ('calling function1')
def function2():
print ('calling function2')
def function3():
print ('calling function3')
functions = {}
functions['function1'] = function1
functions['function2'] = function2
functions['function3'] = function3
name = input('Enter the function name:\n')
if name in functions:
functions[name]()
else:
print ('Invalid function name. Use one of: ')
for key in functions.keys():
print (' - ' + key)
只有一个命令“定义”
更多命令和函数
def定义():
打印(“这是定义函数”)
def modify():
打印(“这是修改功能”)
func={“定义”:定义,“修改”:修改}
命令=输入(“>”).strip().lower()
如果命令在func中:
func[命令]()
其他:
打印(“错误的命令!”)
您正在将输入与函数本身进行比较,您的意思是==“definition”
?命令是字符串,定义是函数。比较结果总是给出假
。这是行不通的。您应该将它与“definition”
进行比较,string.Exec(和/或eval)几乎从来都不是处理用户输入的正确方法。
def definition():
print("This is a function")
command = input("> ")
if command == "definition":
definition()
else:
print("Wrong command !")