猿问

如何在函数中存储公式作为字符串稍后输出?

我正在尝试创建一个函数,我将在其中存储转换器的公式。当需要 X 公式时,它会被调用。当使用简单的0:a+b尝试它 时,它在返回时起作用,但是当尝试将其存储为字符串meter_to_foots 时,它不起作用。我需要将该公式存储为某种东西,因为我需要稍后输出它。这是我遇到问题的代码的一部分。NameError:未定义名称“meters_input”


def my_formulas(i):

    switcher={

        0:(meters_input/0.3048)

    }


    return switcher.get(i,"Invalid formula")



distance_pick=input("Please pick one of the current convertions : \n \n1.Meters to X \n2.Inches to X \n3.Feets to X ")

    if(distance_pick=="1"):

        cls()

        distance_choice = input ("Please select which converter would you like to use ! : \n \n1.Meter to Foot \n2.Meter to Yard \n3.Meters to Inches ")

        if(distance_choice=="1"):

            meters_input=float(input("Make sure to enter distance in Meters ! : "))

            my_formulas(0)

            print ("\nYou entered", meters_input , "meters, which is equal to",my_formulas(0),"foots.")

            time.sleep (3)

            cls ()

            read_carefully_message()


慕神8447489
浏览 163回答 3
3回答

慕的地8271018

要在 Python 中创建函数,请使用 lambda 函数或常规函数定义。例子分别是:def divide(meters_input):  return meters_input / 0.3048或者divide = lambda meters_input: meters_input / 0.3048一般来说,常规函数定义是首选,因为它提高了可读性。您可以按如下方式定义函数映射:def my_formulas(i):    switcher={        0:divide  # do not write divide()    }

心有法竹

如果这些总是简单的函数,您可以lambda为此使用表达式:def my_formulas(i):    switcher= {        0:lambda meters_input: meters_input/0.3048    }    return switcher.get(i,"Invalid formula")my_formulas(0)(27) #88.58267716535433如果您的函数查找始终是从零开始的数字,则最好将函数存储为数组。你也可以做这样的事情:def my_formulas(index):    def meters2Feet(meters):        return meters/0.3048    def hours2Minutes(hours):        return hours * 60    def invalid(*args):        return "Invalid formula"    lookup = [        meters2Feet,        meters2Feet    ]    if index >= len(lookup):        return invalid    return lookup[index]my_formulas(0)(27) # 88.58267716535433它有点复杂,但可能更容易阅读和理解。

白板的微信

尝试将您的功能更改为:def my_formulas(i):    switcher = (i/0.3048)    return switcher函数中的“i”是函数的局部变量。在您的代码中,您将 0 传递给 my_formulas() 函数。i 然后变为 0,但 meter_input 超出了该函数的范围。
随时随地看视频慕课网APP

相关分类

Python
我要回答