2017-02-08 14 views
-1

私はpython3を使ってプログラムを書いています。私は仕事のために使うレポートを簡素化します。それは構造的に健全でエレガントなものではないと思っています。実際には、私はそれを "働いている"ところまで導きました。関数は順番に呼び出されませんか?

メソッド自体は正常に動作しますが、入力すると順番に呼び出されることはありません。私は誰かが何かショーに関連して何かを尋ねることを知っているので、ここでコード全体を投稿します。再び、私は仕事のためにこれを本当にすばやく書きました。それは専門家によって作られたものではないと考えられています。

私の質問は、なぜ私のメソッドが呼び出されないかです。私は辞書の値が入力によって記入され、次にがそれがprecentagesを計算することになっているように、このようにします。しかし、何が起こるかは、パーセンテージの計算方法が間違っているということです。ゼロ誤差で除算することになります(技術的に必要な情報がまだ入力されていないため、

enter_waste(), enter_weight(), calculate_waste_percentage() 

それはenter_waste()を呼び出したが、代わりにenter_weight()を実行しているのcalculate_waste_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 

、。これを修正する方法はありますか?あなたのinput_weight()機能でinput呼び出し欠けている

+0

あなたが言及したように振る舞うべきではないかと疑問に思う –

+0

カンマ区切りではなく、一度に1つずつ呼び出すのはいかがですか? – brthornbury

+0

これはすべてコードですか?私はそれを実行しようとすると、エラーが定義されていません。 –

答えて

2

:書かれたよう

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

代わり

machine_selection = str('...') 

のを、あなたのコードは「という名前のマシン上の重みを設定しようとしているマシンあなたが希望を入力してください。生産された重量を入力するのが好きです: "、それは存在しません。

今後この種のエラーを防ぐために、マシン名が正しく入力されたことを確認することをお勧めします。

+3

'input( '...')'は問題ありません(自動的に文字列です)。これはPython 3です。 – Tagc

関連する問題