【问题标题】:Simple Python Function Issue简单的 Python 函数问题
【发布时间】:2013-12-12 05:17:24
【问题描述】:

我试图在 Python 中运行的这段代码有什么问题? (假设缩进不是问题):

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()

正如您可以想象的那样,自从我完全按照教科书显示的内容输入它以来,这一直令人困惑。感谢您的帮助!

【问题讨论】:

  • 它没有正确缩进,例如。我建议阅读this
  • 您遇到的错误是什么? - 我建议也适当缩进
  • EOFError: 读取一行时出现EOF
  • 我建议总是把你得到的错误和你用来帮助人们回答你的问题的 python 版本。
  • 仅供参考,此代码出现在第二版 Python Programming: An Introduction to Computer Science (Zelle) 中,该版本已切换到 Python 3,因此使用了 @ 987654323@ 而不是 raw_input()

标签: python python-3.x sublimetext


【解决方案1】:

您的代码做错了两件事。
1: 您不能将 eval 与输入法一起使用,因为 eval 要求输入字符串作为输入,而输入则返回浮点值。
如果您将 float 作为输入传递,您可以简单地运行您的程序。

x = input("请输入一个介于 0 和 1 之间的数字:"))

你需要使用raw_input(raw_input会返回字符串数据)

x = eval(raw_input("请输入一个介于 0 和 1 之间的数字:"))

2 :for 循环你需要提供缩进。

【讨论】:

  • FWIW input 等同于 eval(raw_input())。来自docs
【解决方案2】:

需要缩进功能块

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()

另外,我会使用float,而不是eval

def main():
    print("This program illustrates a chaotic function")
    x = float(input("Enter a number between 0 and 1: "))
    for i in range(10):
        x = 3.9 * x * (1 - x)
        print(x)

main()

示例:

>>> def main():
...     print("This program illustrates a chaotic function")
...     x = float(input("Enter a number between 0 and 1: "))
...     for i in range(10):
...         x = 3.9 * x * (1 - x)
...         print(x)
... 
>>> main()
This program illustrates a chaotic function
Enter a number between 0 and 1: .2
0.624
0.9150336
0.303213732397
0.823973143043
0.565661470088
0.958185428249
0.156257842027
0.514181182445
0.974215686851
0.0979659811419

【讨论】:

  • 很抱歉 - 我是新手,仍然需要弄清楚所有格式规则。无论如何,这实际上是我在编辑器中对其进行格式化的方式,并且我只是将 eval 进行了浮动更改,但我收到了错误消息。你知道我会怎么解决这个问题吗?
  • 确保main()之前有一个换行符,否则它会认为它是函数的一部分。我还用示例用法更新了答案。
【解决方案3】:

我认为您的问题是因为您在 sublime 文本编辑器

运行

尝试从命令行运行它

$ python yourscript.py

你会看到你的脚本运行正常。

您得到的EOFError 是由于 sublimtext 没有向您的程序发送任何输入而内置 input 函数要求输入。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2012-08-27
  • 2011-03-19
  • 2023-03-18
  • 2011-01-06
  • 2012-08-10
相关资源
最近更新 更多