2016-10-05 34 views
-1

hello python comunity,捕獲特定邊界時出錯

如何阻止此循環?

error33 = int(2) 
    while error33 > 1: 
     while True: 
       try: 
        survivalrateforjuveniles = float(input("Please enter the survival rate for poomen"))##Float input is being used as 
        break 
       except ValueError: 
        print("Please enter a number between 0 and 1") 
        continue 
       else: 
        break 

非常感謝

+2

'error33'永不改變?然後它不會停止。 – fzzle

+1

你甚至可以編碼嗎? – PortableGibbon

+1

在這段代碼中有很多東西是錯誤的。沒有必要將int轉換爲int,'error33 = 2'很好。你的情況是在'error33'上,它從來沒有被修改,也沒有被使用過。你在另一個裏面有兩個'while',其中一個永遠不會結束。你的循環只有在'survivalrateforlevenile''不是一個浮點數的時候纔會被打破,而你似乎希望在'survivalrateforjuveniles'不是0和1之間的浮點數時打破它。' – Efferalgan

回答

-2

這工作...

error33 = 2 
while error33 > 1: 
     while True: 
       try: 
        survivalrateforjuveniles = float(input("Please enter the survival rate for poomen\n")) 
        break 
       except ValueError: 
        print("Please enter a number between 0 and 1") 
        continue 
       else: 
        error33 = 0 
        break 

我不知道你在做什麼......但我想我會使用類似服用點這樣:

error33 = 2 
survivalrateforjuveniles = -1.0 
while error33 > 1: 
    while not (0 < survivalrateforjuveniles < 1): 
     survivalrateforjuveniles = input("Please enter the survival rate for poomen\n") 
     try: 
      survivalrateforjuveniles = float(survivalrateforjuveniles) 
     except ValueError: 
      survivalrateforjuveniles = -1 
     print("Please enter a number between 0 and 1") 

    print('do what you want') 
    error33 =0 

與您的解決方案沒什麼不同,但您不需要break,看起來更健壯。然而,創建一個讀取survivalrate...和其他輸入(我猜你有)的函數會好很多,因爲你不會多次使用相同的代碼行(這是編寫好軟件的基本做法之一) 。

+1

你怎麼知道'error33'應該在'else'part中改變? – Matthias

+0

@Matthias我剛剛猜到這是你在代碼中使用的形狀。如果你想退出循環,你必須改變那個錯誤33。你可以在你想要的地方改變它。如果這與輸入必須是浮點數的事實有關,那麼我會在'生存率...'後改變它 –