函数未按顺序调用?

2024-04-25 20:03:21 发布

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

我正在使用python3编写一个程序,以简化我用于工作的报表。它不应该是建筑健全或优雅,真的,我只是粗暴地通过我的方式只是为了它的点“工作”。你知道吗

这些方法本身确实可以很好地工作,但是当我输入它们时,它们在运行时并没有按顺序被调用。我将在这里发布整个代码,因为我知道有人会问一些与未显示内容相关的问题。再说一次,我写得很快只是为了工作。它不应该是由专业人士建造的。你知道吗

我的问题是,为什么我的方法没有按顺序调用。我这样做是为了让字典中的值由输入填充,然后计算进位。但实际情况是,它调用calculate percentage方法时出错了,所以我只能得到一个被零除的错误(当调用时出错了,这是真的,因为技术上需要的信息还没有输入)。你知道吗

def enter_waste():
    while True:
        machine_selection = str(input('Please enter which machine you would like to enter the waste for: '))
        for element in machine_list:
            if machine_selection == element['name']:
                print('You Have Selected: {}'.format(element['name']))
                waste_input = int(input('Please enter the waste for this period: '))
                element['waste'].append(waste_input)
                if str(input('Do you want to continue? yes/no: ')) == 'no':
                    print("\nHere's everything as entered: \n")
                    for i, machine in enumerate(machine_list):
                        print(i, machine)
                return False

def enter_weight():
    machine_selection = str('Please enter which machine you would like to enter the produced weight for: ')
    for element in machine_list:
        if machine_selection == element['name']:
            print('You have selected: {}'.format(element['name']))
            weight_input = int(input('Please enter weight produced for this period: '))
            element['weight'] = weight_input
            if str(input('Do you want to continue? yes/no: ')) == 'no':
                print("\nHere's everything as entered: \n")
                for i, machine in enumerate(machine_list):
                    print(i, machine)
                return False

def calculate_waste_percentage():
    for element in machine_list:
        percentage = (sum(element['waste'])/element['weight']) * 100
        element['percentwaste'] = percentage
        print('Machine: {}\nWeight Produced: {;,}\n% of Waste: {}%'.format(element['name'], element['weight'], percentage ))
        return percentage

然而,当我这样称呼他们时:

enter_waste(), enter_weight(), calculate_waste_percentage()

它将调用enter_waste(),然后跳转到calculate_waste_percentage,而不是运行enter_weight()。有办法解决这个问题吗?你知道吗


Tags: nameinforinputelementmachinelistprint
1条回答
网友
1楼 · 发布于 2024-04-25 20:03:21

input_weight()函数中缺少input调用:

machine_selection = str(input('...'))

而不是

machine_selection = str('...')

如前所述,您的代码尝试在名为“Please enter which machine you want to enter the producted weight for:”的机器上设置重量,但该机器不存在。你知道吗

我还建议添加一个检查,以确保机器名输入正确,以防止将来出现这种错误。你知道吗

相关问题 更多 >