2017-04-16 10 views
1

ユーザーが最初の入力に数字を正しく入力しても、2番目の入力には正しくない場合、プログラムを2番目のtryステートメントにループバックさせようとしています。 コード:複数のtryステートメント。最初の入力の代わりに対応するtryステートメントに戻る

print ("We're gonna be doing some division") 

while True: 
    try: 
     a=float(input("input the first number: ")) 
    except: 
     print ("try again") 

    else: 
     break 
     pass 

while True: 
    try: 
     b=float(input("input the second number: ")) 
    except: 
     print ("try again") 

    else: 
     break 
print ("Your final answer is: ", a/b) 

編集:申し訳ありませんが、これは私の非常に最初の質問です。質問のコード部分を正しくフォーマットする方法がわかりません。私は約20分間、失敗につながり、欲求不満に陥りました。

EDIT2:コメントありがとうございました。最後に質問をフォーマットする方法を理解しましたが、依然として答えが必要です。 、私が言うことができるかに基づいて

def get_input(prompt): 

    # Get a number from the user. 

    while True: 
     try: 
      answer = float(input(prompt)) 
      return answer 
     except ValueError: 
      print ("try again") 

def main(): 
    print ("We're gonna be doing some division") 
    numerator = get_input("Input the first number: ") 
    denominator = get_input("Input the second number: ") 
    print ("Your final answer is: ", numerator/denominator) 

main() 
+1

は、もう一度試して、その後、全体のコード部分を削除します。コード。 –

+0

また、スタックオーバーフロー(Markdown)では、コードブロック内のすべての行が4つの空白で始まることに注意してください。 – Nayuki

+0

コードは私のために機能します。あなたの問題は何ですか?何がうまくいかないの? – poke

答えて

1

あなたは(A)、わずかにより説明変数名を使用して自分自身を繰り返し、(B)ができない方法を示します。このコードの迅速なリファクタリングですあなたのプログラムではこれ以外のロジックは正しいです:passキーワードは必要ありません。代わりに、入力が正しいときにwhileループを解除します。また、すべての空白が意図どおりであることを確認してください。私が正しく理解していれば、あなたはこのような何かをしたい:それのすべてを強調表示し、それはだことを示すために、{}のように見えるの書式設定]ボタンをクリックし、それを貼り付けます。

a = 0.0 
b = 0.0 

print("We're going to do some division") 
while True: 
    try: 
     a = float(input("Enter first number: ")) 
     break 
    except: 
     print("try again") 

while True: 
    try: 
     b = float(input("Enter second number: ")) 
     break 
    except: 
     print("try again") 

print("The answer is: " + str(a/b)) 
+0

間違って他の問題を捕まえないようにするには、「ValueErrorを除いて」する必要があります。一般的に、それは良い習慣です。 –

+0

あなたは正しいです、ありがとう! –

関連する問題