用户应该能够选择具有随机(在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)
答案 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'