好吧所以我试图看一个数字是否大于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.我觉得这是一些愚蠢的错误,但我不知道。任何帮助都会很棒。感谢
答案 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>