如何在函数中使用字典键来获取类中校准方法或函数的值?

2024-09-29 11:28:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我对pythonx3.6非常陌生。我有一个类,它有三种方法,可以像计算器一样计算拖拉机的校准值

方程中有八个值。起初,我编写代码来计算一个函数中的所有八个值,但因为开始时需要的某些变量仅在函数结束时计算,因此我无法找到用于有效工作的方程式的顺序。我决定为每个要计算的变量创建一个函数,并在所有其他需要的函数中返回该函数的值

注意:在这个问题中,我只将代码修改为包含方程式的两个相关函数

第一个方法声明一个字典数据类型,其中包含特定的键和值,其中两个属性“fact”和“tim”作为键和值,将根据可用等式中的数据进行计算

第二个函数计算“事实”值,如果“tim”值大于0且不等于null,则计算表示方程式的事实,并计算60秒的分数因子

第三个功能与第二个功能相同,只是它计算时间或“tim”,即拖拉机行驶100米和喷洒田地所需的时间

我将使用kivy textinput来插入变量(但现在不是这样),但我首先必须让类函数工作。我尝试从空闲状态开始,首先创建一个answ=Calibrated类的对象;然后我尝试了answ.calibrationVar(90,“”)。我有一个错误:

Traceback (most recent call last):
   File "<pyshell#8>", line 1, in <module>
     faktor.calibrationVar(90,"")
   File "<pyshell#3>", line 3, in calibrationVar
     k = {'tim':self.tim, 'fact':self.fact}
 AttributeError: 'Calibrated' object has no attribute 'tim'

请参阅下面我的错误代码:

class Calibrated:
    def calibrationVar(self, fact, tim):
        k = {'tim':self.tim, 'fact':self.fact}

    def factorVar(self):
        if k['fact'] == "" and k['tim'] != "" and float(k['tim']):
            try:
                k['fact'] = float(k['tim']) / 60
                                return k['fact']
            except TypeError:

    def timeVar(self):
        if k['fact'] != '' and k['tim'] == "" and float(k['fact']):
            try:
                k['tim'] = 60 * float(k['fact'])
                return k['tim']
            except TypeError:

结果应该是一个保存函数方程结果的字典k,例如,如果时间=90,那么它将等同于一个字典k{'tim':90,'fact':1.5}。然后,我可以将结果打印到一个临时数据库,该数据库最终将输出一个包含会话结果的pdf

有人能告诉我我做错了什么吗

我设法解决了我的问题:我使用for循环并迭代每个方程,直到字典中的所有值都被解决

@Patrick Artner:你是对的,这是一个范围问题,也是我如何使用自我的问题。谢谢你的帮助

我的正确代码:

class Calibrated:
    def calibrationVar(self, tim, fact):
        self.tim=tim
        self.fact=fact
        k = {'tim':tim, 'fact':fact}
        for x in range(2):
            if k['fact'] == "" and k['tim'] != "" and float(k['tim']):
                k['fact'] = float(k['tim']) / 60

            if k['fact'] != '' and k['tim'] == "" and float(k['fact']):
                k['tim'] = 60 * float(k['fact'])
        print(k['tim'],k['fact'])

Tags: and函数代码selfif字典def时间