首页 > 解决方案 > 分配给函数的整数 Input() 变量

问题描述

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

在此处输入图像描述

标签: python

解决方案


如果您想要一种将数字与函数相关联的方法,我能想到的最直接的方法是使用列表。这正是列表所做的......将对象与数字索引(列表中的位置)相关联。与其他方法相比,此方法的一个优点是您的代码不必在您从列表中添加和删除函数时更改,因为它可以将其逻辑基于列表的长度。

这是一个示例,它调用给定数字作为输入的特定函数:

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")

您可以使用 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")

鉴于 lambdas 将您限制为单个表达式,并且我假设您需要更复杂的函数,我猜第一个版本是您想要使用的。


推荐阅读