python - 我无法让我的代码执行用户输入选择的函数
问题描述
当运行我的程序并提供用户输入时,它只执行代码中的最后一个函数。我知道代码有什么问题,我正在用不同的参数重新定义同一个函数。但是,我不知道如何更改它,以便代码运行与用户输入匹配的函数。这是我为该程序编写的代码。
import math
from math import pi
def equation(Lift):
d = float(input("Input d value: "))
v = float(input("Input v value: "))
A = float(input("Input A value: "))
CL = float(input("Input CL value: "))
Lift = .5 * d * (v ** 2) * A * CL
a = ["Lift = ", Lift, "Newtons"]
for i in range (3):
print(a[i], end =" ")
def equation(VCylinder):
r = float(input("Input r value: "))
h = float(input("Input h value: "))
VCylinder = pi * (r ** 2) * h
a = ["Volume of Cylinder =", VCylinder, "m³ (meters³)"]
for i in range(3):
print(a[i], end =" ")
def equation(Exponentdx):
n = int(input("Input n value: "))
u = n
v = n - 1
a = ["dx =", u,"x","**", v, " "]
for i in range(5):
print(a[i], end =" ")
def Main():
print("Currently only compatible with base metric units (meters,
kilograms, etc.)")
Equation = input("Enter desired equation: ")
equation(Equation)
Main()
解决方案
您需要给每个方程函数一个唯一的名称。这将允许您构建一个字典,将标识符映射到每个字典。此外,您需要获取一个参数值以在调用所选函数之前传递它。
这是一个做所有这些事情的例子:
import math
from math import pi
def equation1(Lift):
d = float(input("Input d value: "))
v = float(input("Input v value: "))
A = float(input("Input A value: "))
CL = float(input("Input CL value: "))
Lift = .5 * d * (v ** 2) * A * CL
a = ["Lift = ", Lift, "Newtons"]
for i in range (3):
print(a[i], end =" ")
def equation2(VCylinder):
r = float(input("Input r value: "))
h = float(input("Input h value: "))
VCylinder = pi * (r ** 2) * h
a = ["Volume of Cylinder =", VCylinder, "m³ (meters³)"]
for i in range(3):
print(a[i], end =" ")
def equation3(Exponentdx):
n = int(input("Input n value: "))
u = n
v = n - 1
a = ["dx =", u,"x","**", v, " "]
for i in range(5):
print(a[i], end =" ")
# Build dictionary mapping an equation identifer to equation functions.
equations = {
'1': equation1,
'2': equation2,
'3': equation3,
}
def Main():
print("Currently only compatible with base metric units (meters, kilograms, etc.)")
eq_id = input("Enter desired equation function (1, 2, or 3): ")
eq_arg = float(input("Enter value of argument to pass equation function: "))
equations[eq_id](eq_arg) # Call selected equation with argument.
Main()
推荐阅读
- powershell - 尽管我在 PowerShell 的脚本中嵌入了凭据提示
- html - 使用 Bootstrap 4 构建的登陆页面
- react-native - 将图像添加到 react-native 堆栈导航选项卡视图页脚
- java - 如何按顺序计算字符串中的字符?
- python - 如何将 raspberer pi 3 火焰传感器火灾检测中的数据插入 MySQL 数据库
- html - HTML / CSS:垂直对齐范围与垂直对齐和行高
- java - 未找到请求操作的编解码器:[冻结
<-> java.util.Map ] - javascript - 承诺未在 Jest 测试中执行
- ios - 将数据填充到使用 xib 创建的 UIcollectionview 单元格
- gerrit - 使用插件 metrics-reporter-prometheus 通过 Prometheus 监控 Gerrit 内部