【问题标题】:EOFError on input()输入()上的 EOFError
【发布时间】:2018-12-05 09:01:27
【问题描述】:

我找到了这段代码,我尝试在 python 3 上使用它,但它在 geeks IDE 上不起作用

list=input('racecar:')

if (list==list[::-1]):
    print ("It is a palindrome")
else:
   print("it is not palindrome")

我明白了:

list=input('racecar:') EOFError: EOF 读取一行时

【问题讨论】:

  • 首先不要使用list作为变量名,它会隐藏内置类型list其次你是否尝试调试这个? 不起作用不能完全解释问题
  • 在我的机器上工作。如果您收到错误消息,请将其发布。如果程序正在运行但产生意外输出,请发布输入、预期输出和实际输出。
  • 你能再具体点吗? “不起作用”是什么意思?它会抛出错误吗?因为该代码对我来说很好用。如我所料,输入abba 打印"It is a palindrome",输入abbab 打印"It is not a palindrome"
  • 不要使用list来存储输入字符串,因为list是python的内置类型。你说它不起作用是什么意思?您是否收到任何错误或您是否收到错误的输出。请明确说明问题。
  • 你是如何使用 Python 的?

标签: python python-3.x python-3.5 python-3.6


【解决方案1】:

EOFError: EOF when reading line 可能在input 通话期间发生,前提是stdin 在通话期间不可用或突然关闭

既然您提到您从 geeks IDE 使用它,我假设它没有重定向 stdin 以供用户输入

请尝试使用 cmd python <file> 在终端上以交互方式运行代码

【讨论】:

    【解决方案2】:

    您想使用input 接受用户输入,但可能不会将其提供给您的脚本。

    相反,尝试在尝试接受用户输入之前直接设置您的值。

    test_values = [
        "non-palindrome",
        "123321",
    ]
    
    def palindrometest(s):
        return s == s[::-1]
    
    for value in test_values:
        if palindrometest(value):
            print("{} is a palindrome".format(value))
        else:
            print("{} is not a palindrome".format(value))
    

    一旦你有这个工作,在脚本中尝试input,以更好地了解它是如何工作的。

    s = input("please provide a value: ")
    print("user provided '{}'!".format(s))
    

    【讨论】:

      【解决方案3】:

      发生这种情况是因为您可能使用的是 python 2.7。我刚刚在 python 3.6 上测试了你的代码,它工作得很好(我确实将你的变量列表更改为 lis)。

      【讨论】:

      • 他在评论中说他在 Geeks IDE 上使用 python 3
      • 不要只是猜测。该代码在 python2.7 上也可以正常工作,但需要注意的是您必须将输入放在引号中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 2017-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多