TL; DR-第一个代码块中定义的变量 importFunc 应该是用 x 表示的用户输入函数,另一个变量是应该稍后在第二个代码块的 for循环中进行操作。这不起作用,导致出现 TypeError 。如何创建动态变量 x ,以便可以像 for循环中那样操作 inputFunc ?
我目前正在学习python作为我的第一门编码语言(不包括excel)。我当前的项目是尝试制作Riemman Sum计算器,包括右,左和对角Riemann Sums。如下所示,它努力根据 x 采取一些用户输入功能,并根据用户选择的条件输出黎曼和。
import math
x = 0. #can be any arbitrary float
"""inputs"""
inputFunc = input("Input a function in terms of x\n")
inputStart = float(input("Input start of range: "))
inputEnd = float(input("Input end of range: "))
inputSum = float(input("Input number of total summations over range: "))
inputChoice = input("Input type of Riemann approximation.\n[Left/Right/Diagonal]\n")
现在,我当前的调试测试正在输入“ x ** 2”。为 inputFunc 输入用户信息时。 (请注意,我目前仅使用左Riemann Sums。)但是,执行以下代码时出现错误:
rangeStep = float((inputEnd - inputStart) / inputSum)
def riemannCalc(function):
sumTotal = 0.
if inputChoice.lower() in setLRS: #setLRS = ["left", "l"] (described earlier in program)
for j in calcRange(inputStart, inputEnd, rangeStep): #defined earlier in program - functionally identical to range function except it allows for floats
x = j
sumTotal += function * rangeStep
print(sumTotal)
riemannCalc(inputFunc)
我得到 TypeError:不能将行 sumTotal + = function * rangeStep 的序列乘以'float'类型的非整数。调试时,在代码的第一部分附加以下功能...
print(inputFunc)
返回 x ** 2。,与我的用户输入相同(即使我在第一个块的前面设置了 x = 0。)。
这引出我的问题:如何创建用户输入或动态变量 x ,以便在 x 以表示时可以操纵它inputFunc (例如,我将 inputFunc = x ** 2 设置为 x = 4 最终产生 16.0 ) ,尤其是在 for循环?