def set_values():
loopCtrl = 1
while loopCtrl == 1:
loopCtrl = 2
juvenilePopulation = int(input("Enter the population of the juvenile greenfly (1000s) > "))
if not isinstance(juvenilePopulation, int): loopCtrl = 1
juvenileSurvivalRate = float(input("Enter the survival rate of juvenile greenfly (decimal) > "))
if not isinstance(juvenileSurvivalRate, float): loopCtrl = 1
adultPopulation = int(input("Enter the population of the adult greenfly (1000s) > "))
if not isinstance(adultPopulation, int): loopCtrl = 1
adultSurvivalRate = float(input("Enter the survival rate of adult greenfly (decimal) > "))
if not isinstance(adultSurvivalRate, float): loopCtrl = 1
senilePopulation = int(input("Enter the population of the senile greenfly (1000s) > "))
if not isinstance(senilePopulation, int): loopCtrl = 1
senileSurvivalRate = float(input("Enter the survival rate of senile greenfly (decimal) > "))
if not isinstance(senileSurvivalRate, float): loopCtrl = 1
birthRate = float(input("Enter the birthrate of the greenfly > "))
if not isinstance(birthRate, float): loopCtrl = 1
我有一段公认的丑陋的代码,它目前只是要求一堆输入,将其赋值给变量,然后检查变量的类型,然后循环回到顶部。我真正想要实现的是让代码循环回到输入不正确的输入语句,而不是开始,但在某种程度上比大量的while循环更像Python。
2条答案
按热度按时间col17t5w1#
将对
input
的调用替换为如下函数:你可以这样称呼它:
运行上面的代码看起来像这样:
注意,在这个例子中,我们使用
int
和float
这样的基本类型来进行验证,但是你也可以很容易地传入一个自定义函数,例如,如果生存率需要在0和1之间,你可以写:它看起来像:
cs7cruho2#
尝试这样做。我不确定这是最佳实践,但您可以重用这些代码。您还可以添加额外的数据类型
在这里我已经处理了错误。如果你需要更多的异常条件,你可以添加它。