2016-10-05 30 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。你可以在你想要的地方改变它。如果这与输入必须是浮点数的事实有关,那么我会在'生存率...'后改变它 –