python - 分配给函数的整数 Input() 变量
问题描述
我有一个调用函数的变量列表。这些变量从 1 到 5 编号,每个整数都应该调用一个函数来收集所需的信息。他们选择变量的方法是通过控制台输入,即 input("Select a Number")
解决方案
如果您想要一种将数字与函数相关联的方法,我能想到的最直接的方法是使用列表。这正是列表所做的......将对象与数字索引(列表中的位置)相关联。与其他方法相比,此方法的一个优点是您的代码不必在您从列表中添加和删除函数时更改,因为它可以将其逻辑基于列表的长度。
这是一个示例,它调用给定数字作为输入的特定函数:
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 将您限制为单个表达式,并且我假设您需要更复杂的函数,我猜第一个版本是您想要使用的。
推荐阅读
- python - 计算 AUC 曲线时如何创建阈值?
- python - 'Button' 对象在第二次使用时不可调用
- java - Android Studio - webview下的广告不加载
- reactjs - 将 react-admin 添加到现有项目 - resourceState 未定义
- rust - 是否可以让 wasm-bindgen 忽略 impl 中的某些公共功能?
- elixir - 混合 ecto.create bcrypt_elyxir 和 nmake 错误
- javascript - 为什么我们应该使用 import React from 'react'
- javascript - 是否可以更改重定向页面的比例?
- f# - 可取消 F# 异步主程序,传播异常
- c# - 传递给 ViewDataDictionary 的模型项是 X[] 类型,但是这个 ViewDataDictionary 实例需要 X 类型的模型项