我是初学者并遇到以下问题:每当我在VIM上执行以下脚本(我使用Python 3.6)时:
def main():
print("This program illustrates a chaotic function")
x=eval(input("Enter a number between 0 and 1: "))
for i in range(10):
x=3.9*x*(1-x)
print(x)
main()
只有在最后回忆起EOFError
时才会得到main()
。我得到的是:
This program illustrates a chaotic function
Enter a number between 0 and 1: Traceback (most recent call last):
File "<stdin>", line 7, in <module>
File "<stdin>", line 3, in main
EOFError: EOF when reading a line
并且不明白为什么,特别是因为我几周前尝试过它并且它完美地工作,把我扔到shell来输入值。不知道两者之间发生了什么或问题可能是什么。
答案 0 :(得分:0)
听起来像是在用Python 2执行脚本,其中input()
已使用eval()
。相反,要么使用Python 3执行脚本,要么使用Python 2 raw_input()
函数。
此外,您不需要使用eval
将用户输入的float字符串转换为实际的float;只需使用float()
:
x = float(raw_input("Enter a number between 0 and 1: "))
如果您使用的是Python 3,请将raw_input()
替换为input()
。
答案 1 :(得分:0)
# For Python2
# Replace the line:
x=eval(input("Enter a number between 0 and 1: "))
# with:
x=input("Enter a number between 0 and 1: ")
# For Python3, the line:
x=eval(input("Enter a number between 0 and 1: "))
# should work
使用命令 python ,然后使用Python2的文件名,并使用命令 python3 ,后跟文件名for Python3
<强> Python3:强>
python3 example.py
<强> Python2:强>
python example.py
从here了解详情。