2017-12-08 6 views
0

ここでは、ユーザーの無効な入力をループするためにアイデアを検討しましたが、見つけられませんでした。ユーザーの入力を検証し、正しいまでループします。

私はfirst_numberとsecond_numberを一緒にループする方法を知っていますが、必要に応じて別々にループする方法についてちょっと混乱しています。したがって、ユーザーが悪いsecond_numberを入力して、全体の代わりにそれをループする場合。

私は(はい、これは学校の割り当てである)私は助けを必要部分を添付しました:

def get_numbers(): 
first_number = 0.0 
second_number = 0.0 

while True: 
    try: 
     first_number = float(input("Please enter the first number: ")) 
     second_number = float(input("Please enter the second number: ")) 
    except ValueError: 
     print("Not a valid input, please try again.") 
     continue 

    return first_number, second_number 

答えて

1

1つのループを使用するには、違いを認識する必要があります。

  1. あなたは1 listを使用することができてもあなたは結果を得るために2つの単純な変数を使用します。
  2. "first"と "second"を除いて、入力文字列はほぼ同じです。

コンセプト:

  1. まずあなたがlistをしたいです。
  2. 次に、 "first"、次に "second"の単語を使用するには、forループを使用します。
  3. 次に、whileループを使用して入力を処理し、listを使用して応答を拡張します。各良い返信の後にを使用してwhileループを抜けてください。あなたが行ったように、タプルとして返す

def get_numbers(): 
    result = [] 

    for item in ("first", "second"): 
     while True: 
      try: 
       number = float(input("Please enter the " + item + " number: ")) 
      except ValueError: 
       print("Not a valid input, please try again.") 
      else: 
       result += [number] 
       break 

    return tuple(result) 

+0

このような遅れた返事をおかけして申し訳ありません。私はあなたがここで何をしているのか理解しており、コードが短くて(いつもいい)そうだ。もう少し学ぶ必要があるのはタプルです。それ以外は、あなたの応答に感謝し、簡単な言葉でそれを分解する。 – Eman

0

まず、あなたが入力された場合には二つのループ、それぞれの番号のいずれかを使用し、壊したく有効でない場合は続行するのではなく、有効です。次に、return文を2番目のループの直後に移動する必要があります。

ところで、最初の割り当てをfirst_numbersecond_number(以下にコメントアウト)にすることができます。 float(input(...))に割り当てることで十分です。

def get_numbers(): 
    #first_number = 0.0 
    #second_number = 0.0 

    while True: 
     try: 
      first_number = float(input("Please enter the first number: ")) 
      break 
     except ValueError: 
      print("Not a valid input, please try again.") 

    while True: 
     try: 
      second_number = float(input("Please enter the second number: ")) 
      break 
     except ValueError: 
      print("Not a valid input, please try again.") 

    return first_number, second_number 
+0

ご返信ありがとうございます。私は後半にお詫び申し上げます。さて、私はこの道を歩きたくなったが、どこから始めるべきか分からなかった。ループは混乱を招くので、私は2に入れようと思ったので、私もそれを試みなかった。また、最初の2つの課題を残しておいたことを理解しています。ご意見ありがとうございます。 – Eman

関連する問題