当使用大于号时,Python在返回false时返回true

时间:2016-03-13 06:35:24

标签: python python-2.7

好吧所以我试图看一个数字是否大于1小于0或等于什么然后退出。这是我到目前为止所做的。

def main():
    print("This program illustrates a chaotic function")
    x = raw_input("Enter a number between 0 and 1: ")
    if x == "" or x < 0 or x > 1:
        print("bad person")
        exit()
    else:
        x = eval(x)
        for i in range(10):
            x = 3.9 * x * (1-x)
            print(x)
main()
raw_input()

当我输入0.5时,我的代码会继续打印坏人,即使它大于0且小于1.我觉得这是一些愚蠢的错误,但我不知道。任何帮助都会很棒。感谢

2 个答案:

答案 0 :(得分:1)

错误的原因可能是您无法以有意义的方式将字符串(由raw_input返回)与数字进行比较。因此,您应该将输入转换为数字 - 在这种情况下,您需要float

x = float(raw_input("Enter a number between 0 and 1: "))

然后你不再需要那条线了:

x = eval(x)

答案 1 :(得分:1)

val = None
while val is None or val < 0 or val > 1:
    try:
        val = float(raw_input("Enter a number between 0 and 1: \n"))
    except ValueError:
        print("You must enter a number between 0 and 1.")

for i in range(10):
    val = 3.9 * val * (1 - val)
    print(val)

这样你就不必使用exit(),它不会破坏while循环,直到它得到一个介于0和1之间的数字。它还会继续用户输入一个char或其他任何东西。< / p>