没有按顺序调用函数?

时间:2017-02-08 21:56:44

标签: python function python-3.x

我正在使用python3编写程序来简化我用于工作的报告。它不应该在建筑上声音或优雅,我真的只是通过它,直到它工作"。

这些方法本身可以正常工作,但是当我输入它们时,它们在我运行它们时不会被按顺序调用。我要在这里发布整个代码,因为我知道有人会问一些与未显示的相关的内容。再一次,我写这个很快就是为了工作。它不应该是由专业人士建造的任何东西。

我的问题是,为什么我的方法没有按顺序调用。我是这样做的,因此字典值由输入填充,然后它应该计算预百分比。但是会发生的是,它无序地调用计算百分比方法,因此我很难通过零错误得到除法(当无序调用时,是的,因为技术上所需的信息还没有输入然而)。

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()。有没有办法来解决这个问题?

1 个答案:

答案 0 :(得分:2)

您的input功能缺少input_weight()来电:

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

而不是

machine_selection = str('...')

如上所述,您的代码会尝试在名为&#34的计算机上设置权重;请输入您想要输入生产权重的计算机:",该计算机不存在。

我建议还添加一个检查机器名称输入正确,以防止将来出现此类错误。