如何制作动态嵌入变量,该变量首先嵌入用户输入中?

时间:2018-10-30 00:13:14

标签: python python-3.x

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循环

0 个答案:

没有答案