while 循环 / if 语句与用户输入 PYTHON 相结合



用户应该能够在随机(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)

如果您想象代码的流程,则当 while 循环将其计算为字符串时,您似乎正在将random_disease重置为浮点数。因此,即使您输入 Y/N,它也会被数字类型覆盖。解决方案是创建另一个 while 循环计算的变量:例如:while ask != 'Y' and ask != 'N' <</p>

div class="one_answers">

您有逻辑问题。你的陈述将永远是真实的;如果random_disease是"Y",则不是"N",反之亦然。你需要在那里and,而不是or.

最新更新