2017-09-14 90 views
-1
# -*- coding: utf-8 -*- 
question = raw_input("Python or Ruby?") 
while question != "Python": 
    print "Nope!" 

这是一个简单的。我是一个业余爱好者,我正在学习基础知识。我试着用这个循环的东西,但它给出了这样的错误:Python 2.7 while循环不工作

 
$python main.py 
Python or Ruby?Traceback (most recent call last): 
    File "main.py", line 2, in 
    question = raw_input("Python or Ruby?") 
EOFError: EOF when reading a line 

此外,当我试图看到PyCharm没有发生输出,只是一个空白输出窗口出现。

+2

这是一个很好的无限循环,但我不明白这会如何引发这个错误。 –

+0

'question'的值在while循环内不会改变**,所以条件永远不会被满足 - 循环是无限的。 –

+2

你是如何运行这段代码的?在输入上获得EOF似乎有几个原因,例如[这](https://stackoverflow.com/questions/23079388/python-eof-error-raw-input),但它似乎取决于你在哪里运行它 – roganjosh

回答

0

。使用你的代码,开始时需要用户输入并将其作为变量存储。 while循环会无限地检查它,如果它不等于“Python”,它会打印“Nope!”,这意味着它将无限打印“不!”!一遍又一遍地。一个“如果”语句会运行得更好:

if question != "Python": 
    print "Nope!" 

的“如果”语句将只检查一次,而不是无限检查它。希望这个答案帮助你!

2

寻找类似的东西?

# -*- coding: utf-8 
import sys 
question = None 
while question != "Python": 
    question = raw_input("Python or Ruby? ->") 

    if(question != "Python"): 
     print("Nope!") 
0

我会建议使用if语句,而不是一个无限while循环(见下文)。

question = raw_input('Python or Rub?') 
while 'Python' not in question: 
    print 'Nope!' 

您可以改进比较小写字母的回答。否则大写字母将产生一个Nope!输出,即使答案在技术上是正确的(当Pythonpython都正确时)。

question = raw_input('Python or Rub?') 
if 'python' not in question.lower(): 
    print 'Nope!' 
+0

也就是说,如果'Python'没有问题',你有一个无限循环。 – ForceBru

0

在你的情况下,while语句没有完成。声明一个定义可以帮助你。

def Question(): 
question = raw_input("Python or Ruby?") 
while question != "Python": 
    print "Nope!" 
    return Question() 
print "Correct" 
return 1 

或者以获得最佳性能使用,如果statment recursivly:

def Question(): 
question = raw_input("Python or Ruby?") 
if question == "Python": 
    print "Correct" 
    return 1 
print "nope" 
return Question() 
'而' 循环主要用于当事情保持不变,和/或改变检测

`