2017-10-23 4 views
0

Dies ist wahrscheinlich eine einfache Antwort, aber ich dachte, ich würde sowieso fragen.Python Wie man eine Schleife mit einer Benutzereingabe stoppt

Mein Code unten fragt den Benutzer nach einer Nummer und abhängig von der Antwort wird die Note gedruckt, die den Nummern entspricht.

Ich möchte die Schleife stoppen (beenden Sie das Programm), indem Sie den Benutzer eingeben (999). Ich weiß, dass das Problem in meinem if userScore >= 90" print ('A') ist. Wenn der Benutzer die 999 eingibt, nimmt der Computer sie als A.

Gibt es eine Verknüpfung, um dies zu beheben?

(PS habe ich die Pausen zu jeder Zeile, weil, wenn sie die Ausgänge nicht da waren endlos wiederholte immer wieder.)

userScore = float(input('Enter the score or type "999" to quit: ')) 

    while True: 

     try: 
      if userScore >= 90: 
       print ("You earned an A") 
       break 


      elif userScore >= 80: 
       print ("You earned a B") 
       break 


      elif userScore >= 70: 
       print ("You earned a C") 
       break 


      elif userScore >= 60: 
       print ("You earned a D") 
       break 


      elif userScore <= 59.9: 
       print ("You earned an F") 
       break 

     except: 
      if userScore == '999': 
       break 
      main() 
+1

Überprüfen Sie zuerst 'userScore == '999'' zuerst; gleich nach dem "Versuch". Übrigens, warum das "versuchen"? – mshsayem

+0

'Try' wird im Allgemeinen zur Fehlerüberprüfung verwendet - ich glaube nicht, dass' try' die richtige Syntax ist, um hier zu verwenden. Fügen Sie einfach eine weitere 'if'-Anweisung vor Ihren anderen hinzu, die überprüft, ob' userScore == '999'' ist. – acer

Antwort

1

nicht außer versuchen Sie verwenden. Versuchen Sie, außer ist für die Fehlerbehandlung gedacht. Dies kann unter Verwendung einer einfachen while-Schleife gehandhabt werden.

userScore = float(input('Enter the score or type "999" to quit: ')) 

while userScore!=999: 
    if userScore >= 90: 
     print ("You earned an A") 
     break 

    elif userScore >= 80: 
     print ("You earned a B") 
     break 

    elif userScore >= 70: 
     print ("You earned a C") 
     break 

    elif userScore >= 60: 
     print ("You earned a D") 
     break 

    elif userScore <= 59.9: 
     print ("You earned an F") 
     break 
main() # Why is this even required? 
+0

ah ich verstehe jetzt, danke für die Klarstellung. –

0

Hier ist, was Sie versuchen zu erreichen. Es wird in den Kommentaren erklärt.

while True: 

    #This part gets the user input. It waits until the user enters a valid number input. 
    while True: 
     prelim = input('Enter the score or type "999" to quit: ') 
     try: 
      prelim = int(prelim) 
     except: 
      print("Please enter a valid input.") 
     else: 
      #if the input can be converted into a number, then this is our final input value 
      userScore = float(prelim) 
      break 

    #The first thing we should check is if the user wants to exit. This way it won't print out an answer then exit. 
    if userScore == 999: 
     break 

    if userScore >= 90: 
     print ("You earned an A") 


    elif userScore >= 80: 
     print ("You earned a B") 


    elif userScore >= 70: 
     print ("You earned a C") 


    elif userScore >= 60: 
     print ("You earned a D") 


    elif userScore <= 59.9: 
     print ("You earned an F") 
Verwandte Themen