2017-10-23 13 views
0

これはおそらく簡単な答えですが、とにかく私は尋ねると思いました。Pythonループをユーザ入力で止める方法

以下のコードは、ユーザーに番号を要求しています。答えに応じて、番号に対応する等級が印刷されます。

(999)を入力することでループを停止(プログラムを終了)したいと考えています。私は問題が私のif userScore >= 90" print ('A')にあることを知っています。したがって、ユーザーが999を入力すると、コンピュータはそれをAとみなします。

これを修正するためのショートカットはありますか?

(PS彼らはそこにいなかったときの出力が延々と繰り返し保持ので、私はすべての行に改行を追加しました。)

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

'userScore == '999''最初にチェックしてください。 'try'の直後です。ところで、なぜ「試し」? – mshsayem

+0

'try'は一般的にエラーチェックのために使われます - 私は' try'はここで使う正しい構文ではないと思います。他の 'if'文を' userScore == '999'をチェックする他の文の前に追加してください。 – acer

答えて

1

を除い試みを使用しないでください。 try exceptはエラー処理のためのものです。これは単純なwhileループを使用して処理できます。

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

ああ、分かりました。ありがとうございました。 –

0

これはあなたが達成しようとしているものです。これはコメントに説明されています。

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") 
関連する問題