2017-01-02 20 views
-1

私はPythonにはかなり新しく、電卓を開発しようとしました。私はそれを作成して、9を押して終了するまで質問を続けます。これをやっている間、私はエラーをしたし、それが最初の番号を入力するように私を求め続け、あなたが最初の場所で破るために何もしないためPython電卓コード

loop = 1 
oper = 0 

while loop == 1:  
    num1 = input("Enter the first number: ") 
    print num1 

    oper = input("+, -, *, /,9: ") 
    print oper 

    num2 = input("Enter the second number: ") 
    print num2 

    if oper == "+": 
     result = int(num1) + int(num2) 
    elif oper == "-": 
     result = int(num1) - int(num2) 
    elif oper == "*": 
     result = int(num1) * int(num2) 
    elif oper == "/": 
     result = int(num1)/int(num2) 
    elif oper == "9": 
     loop = 0 


    print "The result of " + str(num1) + str(oper) + str(num2) + " is " + str(result) 

    input("\nPress 9 to exit.") 
+4

修正インデントを – depperm

答えて

0

loop = 1 
oper = 0 

while loop == 1: 

    x = input("Press 9 to exit otherwise anything to continue:")#much better way 
    if x == "9": 
     break 
    num1 = input("Enter the first number: ") 
    print (num1) 

    oper = input("+, -, *, /: ") 
    print (oper) 

    num2 = input("Enter the second number: ") 
    print (num2) 

    if oper == "+": 
     result = int(num1) + int(num2) 
    elif oper == "-": 
     result = int(num1) - int(num2) 
    elif oper == "*": 
     result = int(num1) * int(num2) 
    elif oper == "/": 
     result = int(num1)/int(num2): 
    else: 
     print("Invalid operator!") #if user inputs something else other than those 


    print ("The result of " + str(num1) + str(oper) + str(num2) + " is " + str(result)) 
1

それはだとループし続けます。 whileループその後

oper = raw_input("+, -, /, *, or 9 (to exit)":) 

elif文を含めて終了し、0に loopを変更します: 9を含めるように operを変更してみてください。また

elif oper == "9": 
    loop = 0 

を、あなたのインデントを扱う:

loop = 1 

while loop == 1:  

    num1 = input("Enter the first number: ") 
    print num1 

    oper = input("+, -, *, /,9: ") 
    print oper 

    num2 = input("Enter the second number: ") 
    print num2 

    if oper == "+": 
     result = int(num1) + int(num2) 
    elif oper == "-": 
     result = int(num1) - int(num2) 
    elif oper == "*": 
     result = int(num1) * int(num2) 
    elif oper == "/": 
     result = int(num1)/int(num2) 
    elif oper == "9": 
     loop = 0 


print "The result of " + str(num1) + str(oper) + str(num2) + " is " + str(result) 
+0

はいけない、「= 0ループ」である必要がありますしてください? Loop = 1にするとループが維持されます。 – EJoshuaS

+0

@EJoshuaSはいそれは –

1

あなたはインデントされていない可能性があります。 Pythonはあなたがどれだけインデントしているか気にするので、インデントされた行だけがwhileループの一部とみなされます。ここでは、最初の行(num1 = input...)のみがwhileループの一部とみなされています。これを修正する最も簡単な方法は、ループ内にあると思われる各行の前に4つのスペースを追加することです(そして、ifステートメントの各行の前にさらに4つのスペースを追加する)。

詳細については、http://www.diveintopython.net/getting_to_know_python/indenting_code.htmlを参照してください。あなたはインデントに問題があったし、ここでは、whileループのためのブレークを使用して終了するには良い方法だ

+0

です*ここのインデント*は間違っていますが、OPにはエラーは言及されていません。ここでのOPの問題は、ループを終了する方法です –

+0

'break 'の欠如は' loop = 0'を設定し、ループ条件は 'while loop == 1'なので、問題はありません。彼は、ループの最初の行だけに到達したと言います。これは、ループの一部として扱われる唯一の行であることを示唆しています(おそらく、彼のPythonインタプリタはエラーを出す代わりにその方法で動作します)。 –

+1

私はnum1 = input(...とprint num1はインデントされていますが、他のものはインデントされていないので、最初の番号を尋ねてループします。 – Lex