2016-12-24 14 views
-2

whileループを動作させることに問題があります。私はnext = yコマンドを使用してプログラムを起動しますが、最後にmain関数を実行するために(next == y)コーディングしたところで、このビットは機能していないようです。 「n」や「y」以外の文字を入力しても、その機能は引き続き繰り返されます。私の考えは、最初のnext = yがすべて乗り越えているということですが、そうでなければコードを実行して何も実行していないので、これを取り除くことはできません。whileループが動作しないのはなぜですか?

next = "y" 



def main(): 

      operator = input("Select a function and press enter (+, - , *, /) ") 


      if(operator != "+" and operator != "-" and operator != "*"and operator >!= "/"): 
     print(input("You must enter a valid operator ")) 
         else: 
     val1 = int(input("Select value 1 ")) 
     val2 = int(input("Select value 2 ")) 

    if(operator == "+"): 
     print(add(val1, val2)) 
    elif(operator == "-"): 
     print(sub(val1, val2)) 
    elif(operator == "*"): 
     print(mult(val1, val2)) 
    else: 
     print(div(val1, val2)) 

next = (input("Would you like to do another calculation? (y/n): ")) 

while(next == "y"): 
    main() 

これは簡単な修正だと思うが、どうすればよいかわからない。

+6

を終了する場合は、コードスニペットでインデントを修正してくださいもらえますか? 「メイン」にあるものとその外側にあるものを理解するのは難しいです。 – FlipTack

答えて

0

whileループ内を移動するニーズ

声明

next = (input("Would you like to do another calculation? (y/n): ")) 
。そのままですが、それは一度しか設定されていません。 (プロンプトが一度しか表示されないようにしてください)

1

次はメイン関数のローカル変数です。あなたはそれをグローバル(悪い習慣)にするか、main機能の最後にreturn nextを追加することができます。あなたは、あなたのループ内でこのような何かを実行する必要があります。

while next == 'y': 
    next = main() 
+0

'main'の本体に' next'がありません。 – sfjac

+1

@sfjac私はインデントについていくつかのことを推測していますが、それははっきりとはっきりしていません。 –

+0

メイン内の字下げは、1つの不思議なことになります。:) – sfjac

1

まず第一に、あなたはそれが組み込み関数nextを上書きするようnextは、変数名のお粗末な選択であることに注意してください - user_choiceのようなものを考える、など

とにかく、ここにあなたのコードの構造は、おそらくあるべき方法は次のとおりです。毎回main()が終了した

def main(): 
    # Do calculations 

choice = 'y' 
while choice == 'y': 
    main() 
    choice = input("Would you like do another calculation? (y/n): ") 

、ユーザーが入力01に頼まれますとなり、ループが終了します。選択肢がyの場合、それは再度実行されます。それ以外の場合は、ループを終了します。

0

次はPythonの組み込み関数です。最初に正しい変数名を選ぶのは良い習慣です。別の名前の隣の変数名を変更することができます。

ステップ1:

ステップ2を入力して機能を選択し、を押し

while(next == "y"): 
    main() 
    **next = (input("Would you like to do another calculation? (y/n): "))** 

ですから、プログラムを初めて実行するときに:あなたはループをしながら、後にユーザーの選択を求めるなら、あなたのプログラムがうまく動作します:選択値1

ステップ3:選択値2

ステップ4:機能

の値を印刷

ステップ5:あなたは別の計算

ステップ6をやりたい:yは、その後、他のgotoステップ1は、プログラム

関連する問題