2017-06-20 1 views
-5
print('Select operation') 
print('Choose from:') 
print('+') 
print('-') 
print('*') 
print('/') 

choice=input('Enter choice (+,-,*,/):') 

num1=int(input('Enter first number:')) 
num2=int(input('Enter second number:')) 

if choice== '+': 
print(num1,'+',num1,'=', (num1+num2)) 
while restart **=** input('Do you want to restart the calculator y/n'): 
    if restart == 'y':t 
     print('restart') 
     else restart == 'n': 
      print('Thanks for using my program') 
      break 

elif choice== '-': 
print(num1,'-',num2,'=', (num1-num2)) 

elif choice== '*': 
print(num1,'*',num2,'=', (num1*num2)) 

elif choice== '/': 
print(num1,'/',num2,'=',(num1/num2)) 

else: 
print('Invalid input') 

Was ist falsch an der = fett? Ich verstehe nicht, was daran falsch ist? Jemand bitte beantworte meine Frage.Warum sagt es, dass das = in Fettdruck eine ungültige Syntax ist?

Danke, Charlotte

+4

Fix Ihren Einzug. – SLaks

+1

Ja, Sie haben eine ungültige Syntax. Verwenden Sie den Gleichheitsoperator 'restart == input (...)' –

+1

In einigen Sprachen können Sie Assignment-Anweisungen innerhalb einer while-Bedingung haben. Python gehört nicht zu diesen Sprachen. – Kevin

Antwort

0

Mehrere Probleme hier:

  1. Zuordnung von input in eine Variable kann nicht in while-Schleife überprüft werden, sollten Sie es in Zuordnung aufgeteilt und prüfen.

  2. else kann keine Bedingung enthalten

  3. Sie einen Fehler auch beim Drucken der Ergebnisse hatte - Sie gedruckt num1 zweimal

  4. Die Vertiefungen in Python sinnvoll sind - stellen Sie sicher, es richtig eingezogen neben Post Zeit

eine Lösung für die Probleme oben:

def calc(): 
    print('Select operation') 
    print('Choose from:') 
    print('+') 
    print('-') 
    print('*') 
    print('/') 

    choice=input('Enter choice (+,-,*,/):') 

    num1=int(input('Enter first number:')) 
    num2=int(input('Enter second number:')) 
    if choice == '+': 
     print("{}+{}={}".format(num1, num2, num1+num2)) 

    elif choice == '-': 
     print("{}-{}={}".format(num1, num2, num1-num2)) 

    elif choice == '*': 
     print("{}*{}={}".format(num1, num2, num1*num2)) 

    elif choice == '/': 
     print("{}/{}={}".format(num1, num2, num1/num2)) 
    else: 
     print('Invalid input') 


if __name__ == '__main__': 
    restart = 'y' 
    while restart: 
     if restart == 'y': 
      print('restart') 
      calc() 
      restart = input('Do you want to restart the calculator y/n')  
     elif restart == 'n': 
      print('Thanks for using my program') 
      break 
+0

Die Schleife "Neustart des Rechners" ist unendlich. –

+0

@ Jean-FrançoisFabre - behoben – alfasin

+0

@Charlotte aufgepasst - Ich habe den Code ein wenig umgestaltet, indem ich die Geschäftslogik extrahiert habe, um die Eingabe zu erhalten und die Berechnung in eine Funktion umzuwandeln und diese Funktion von main aus aufzurufen. Sie können (und sollten) das Refactoring fortsetzen und die Eingabe in einer dedizierten Funktion lesen (und validieren) - und die Berechnung in einer anderen durchführen. – alfasin

0

Im Gegensatz zu C und Java, Python-Unterstützung innerhalb einer Schleife oder bedingter Anweisung nicht Aufgabe.

Angenommen, Sie möchten einen Wert zuweisen, müssen Sie es draußen tun und dann testen.

restart = input(...) 
while restart: 
    ... # do something here 

Wenn jedoch alles, was Sie tun wollen, ist ein Vergleich, müssen Sie =-== ändern:

while restart == ...: 
    ... # do something here 
+0

das würde in einer Endlosschleife führen, obwohl –

+0

@ Jean-FrançoisFabre Eigentlich hast du recht. Ich sah die Pause, aber ich wusste nicht, wie es genannt wurde. Ja, Endlosschleife sicher. –

0

Sie haben versucht, eine Zuweisungsanweisung als Booleschen Wert zu verwenden; Dies schlägt in einigen Punkten fehl. Vor allem verbreiten Sie IhreLogik über mehrere Codezeilen und verwirren den Parser.

Sie wollen wahrscheinlich etwas wie folgt aus:

restart = input('Do you want to restart the calculator y/n') 
while restart.lower() == 'y': 
    ... 
    restart = input('Do you want to restart the calculator y/n') 
Verwandte Themen