while loop / if语句与用户输入结合PYTHON

时间:2016-06-07 17:37:23

标签: python if-statement random while-loop

用户应该能够选择具有随机(在0.2和0.5之间)的疾病因子,并输入自己的疾病因子。我尝试使用while循环将其设置为关闭,然后为Y或N选择使用if语句。然而,一旦设定了疾病值,它就不会吸引原始的Y或N疾病因子标准,因此再次循环并询问用户是否想要输入他们自己的疾病因子。我可以看出为什么会出错,但我不知道该放什么。

此外,当用户选择“N”时,会出现错误

while random_disease < 0.2 or random_disease > 0.5 :
TypeError: unorderable types: str() < float()

我不明白为什么会这样,因为我最初将random_disease设置为数字,并且它在循环内部关于数字,而不是Y或N.

对于预先设置的缩进很抱歉,它直接来自我当前的代码,其中包含许多循环,函数等。 有什么帮助吗?

# Random disease factor #
        random_disease = 12
        while random_disease != "Y" or random_disease != "N":
            random_disease = input("Do you want a random disease factor? Enter Y if you do, or N if you want to select it yourself. Remember this will be between 0.2 and 0.5")
            if random_disease == "Y":
                random_disease = random.uniform(0.2, 0.5)
            elif random_disease == "N":
                while random_disease < 0.2 or random_disease > 0.5 :
                    try:
                        random_disease = float(input("What is your selected disease factor? Remember this should be between 0.2 and 0.5 : "))
                    except ValueError as ex:
                        print(ex)
            print("Your disease is ", random_disease)

2 个答案:

答案 0 :(得分:0)

你有一个逻辑问题。你的while语句总是是真的;如果double distanceToLine = 2*area/computeDistanceBetween(line.startPoint, line.endPoint) 是&#34; Y&#34;它不会是&#34; N&#34;,反之亦然。您需要random_disease,而不是and

答案 1 :(得分:0)

如果你描绘了代码的流程,那么当while循环将它作为字符串计算时,你似乎将random_disease重置为float。因此,即使您输入了Y / N,它也会被数字类型覆盖。解决方案是创建while循环评估的另一个变量:例如:while ask != 'Y' and ask != 'N'