Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 要分配给函数的整数输入()变量_Python - Fatal编程技术网

Python 要分配给函数的整数输入()变量

Python 要分配给函数的整数输入()变量,python,Python,我有一个调用函数的变量列表。这些变量的编号从1到5,每个整数都应该调用一个函数来收集所需的信息。选择变量的方法是通过控制台输入,即输入(“选择一个数字”) 如果您想要一种将数字与函数关联起来的方法,我认为最简单的方法就是使用列表。这正是列表所做的…将对象与数字索引(列表中的位置)关联。与其他方法相比,这种方法的一个优点是,在从列表中添加和删除函数时,代码不必更改,因为它可以根据列表的长度来确定其逻辑 下面是一个调用给定数字作为输入的特定函数的示例: def function1(): pr

我有一个调用函数的变量列表。这些变量的编号从1到5,每个整数都应该调用一个函数来收集所需的信息。选择变量的方法是通过控制台输入,即输入(“选择一个数字”)


如果您想要一种将数字与函数关联起来的方法,我认为最简单的方法就是使用列表。这正是列表所做的…将对象与数字索引(列表中的位置)关联。与其他方法相比,这种方法的一个优点是,在从列表中添加和删除函数时,代码不必更改,因为它可以根据列表的长度来确定其逻辑

下面是一个调用给定数字作为输入的特定函数的示例:

def function1():
    print("I am function 1")

def function2():
    print("I am function 2")

def function3():
    print("I am function 3")

def function4():
    print("I am function 4")

def function5():
    print("I am function 5")

functions = [function1, function2, function3, function4, function5]

f = input("Enter a number between 1 and {} > ".format(len(functions)))
try:
    i = int(f)
    if i < 1 or i > len(functions):
        print("There's no function with number " + f)
    else:
        functions[i-1]()
except ValueError:
    print("Invalid Input")
def function1():
打印(“我是功能1”)
def function2():
打印(“我是功能2”)
def function3():
打印(“我是功能3”)
def function4():
打印(“我是功能4”)
def function5():
打印(“我是功能5”)
函数=[函数1、函数2、函数3、函数4、函数5]
f=输入(“输入一个介于1和{}>”之间的数字。格式(len(函数)))
尝试:
i=int(f)
如果i<1或i>len(函数):
打印(“没有带数字的函数”+f)
其他:
功能[i-1]()
除值错误外:
打印(“无效输入”)
使用lambda(匿名)函数可以更简洁地完成同样的事情。由于您是按编号引用函数,因此它们不需要名称:

functions = [
    lambda: print("I am function 1"),
    lambda: print("I am function 2"),
    lambda: print("I am function 3"),
    lambda: print("I am function 4"),
    lambda: print("I am function 5")
]

f = input("Enter a number between 1 and {} > ".format(len(functions)))
try:
    i = int(f)
    if i < 1 or i > len(functions):
        print("There's no function with number " + f)
    else:
        functions[i-1]()
except ValueError:
    print("Invalid Input")
函数=[
lambda:print(“我是函数1”),
lambda:print(“我是函数2”),
lambda:print(“我是功能3”),
lambda:print(“我是函数4”),
lambda:print(“我是函数5”)
]
f=输入(“输入一个介于1和{}>”之间的数字。格式(len(函数)))
尝试:
i=int(f)
如果i<1或i>len(函数):
打印(“没有带数字的函数”+f)
其他:
功能[i-1]()
除值错误外:
打印(“无效输入”)

鉴于lambdas将您限制为一个表达式,并且我假设您需要更复杂的函数,我猜第一个版本就是您想要的。如果您只想在获得一个数字后执行一个函数,那么您可以尝试pseudoswitch子句:-

def switch(i):
    py_switch = {
            1: lambda: function1(),
            2: lambda: function2(),
            3: lambda: function3(),
            4: lambda: function4(),
            5: lambda: function5(),
        }
    function = py_switch.get(i)
    function()

choice = int(input("Enter your choice = "))

switch(choice)

这是一个等价的交换子句(在C++、java等语言中发现),输入一个输入,并根据输入值提供输出。


实现大多数程序中常见的
if-else
梯形图有点困难。

answer=input()
if-answer==“1”:view_15_cities()
您对花括号和
lambda
返回值的描述完全错误。您的代码可以工作,但这只是因为花括号正在
lambda
函数中创建
set
文本。这是一种非常粗略的运行多行代码的方法,实际上它不允许您运行任何语句(如赋值),只允许运行额外的表达式(如函数调用)。lambda的返回值将是一个集合,其中包含所有expressions.Oops中的唯一值。我知道这一点,但显然还不够清楚。我可能和Java混在一起了吗?谢谢…我会改密码的。