2017-04-16 34 views
1

我想讓程序循環回第二個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分鐘,導致失敗和很多挫折。

編輯2:謝謝你的意見。最後想出瞭如何格式化問題,但仍然需要一個答案。

+1

刪除整個代碼部分,然後再試一次:貼吧,然後突出顯示所有的它,然後單擊格式按鈕,看起來像{},這表明它的碼。 –

+0

另請注意,在Stack Overflow(Markdown)中,代碼塊中的每一行都以4個空格開始 – Nayuki

+0

該代碼對我來說很有用。你的問題到底是什麼?什麼不工作? – poke

回答

1

下面是該代碼的快速重構,顯示您如何(A)不重複自己,和(B)使用更具描述性的變量名:

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() 
+0

你應該'除了ValueError',所以你不會誤解其他問題。一般來說,這是一個很好的做法。 –

+0

你是對的,謝謝! –

0

根據我所知道的,您的程序中的邏輯是正確的,除此之外:您不需要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)) 
相關問題