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

Dies ist ein einfacher. Ich bin ein Amateur und ich lerne die Grundlagen. Ich habe versucht, etwas mit dieser Schleife, aber es gibt diesen Fehler:Python 2.7 While Loop funktioniert nicht

 
$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 

Auch wenn ich versuche, in PyCharm nichts zu sehen Ausgang passiert, nur ein leeres Ausgabefenster auftreten.

+2

Das ist eine schöne Endlosschleife, die Sie dort haben, aber ich sehe nicht, wie das diesen Fehler auslösen würde. –

+0

Der Wert von 'Frage' ändert sich nicht ** innerhalb der While-Schleife, so dass die Bedingung nie erfüllt wird - die Schleife ist unendlich. –

+2

Wie läuft dieser Code? Es gibt mehrere Gründe dafür, EOF auf "Eingabe" zu bringen, z. [this] (https://stackoverflow.com/questions/23079388/python-eof-error-raw-input) aber es scheint davon abhängig zu sein, wo Sie es ausführen – roganjosh

Antwort

0

'While' Schleifen vor allem zur Erkennung verwendet werden, wenn etwas gleich bleibt und/oder Änderungen. Mit Ihrem Code nimmt er am Anfang Benutzereingaben auf und speichert sie als Variable. Die while-Schleife prüft sie dann unendlich und wenn sie nicht gleich "Python" ist, druckt sie "Nope!", Was bedeutet, dass sie unendlich "Nope!" wieder und wieder. ‚Wenn‘ Aussage funktionieren würde viel besser:

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

Die ‚if‘ Anweisung wird es nur einmal überprüfen, statt es unendlich zu prüfen. Hoffe, diese Antwort hat dir geholfen!

2

Suchen Sie etwas wie das?

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

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

Ich würde empfehlen, eine if-Anweisung, anstatt eine unendliche while-Schleife (siehe unten).

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

Sie können die Aussage verbessern, indem Sie die Antwort in Kleinbuchstaben vergleichen. Andernfalls werden die Großbuchstaben einen Nope! Ausgang erzeugen, auch wenn die Antwort technisch korrekt ist (wenn Python oder python beide korrekt sind).

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

Das heißt, wenn "Python" nicht in Frage steht, haben Sie eine Endlosschleife. – ForceBru

0

In Ihrem Fall wird die while-Anweisung nicht abgeschlossen. Deklarieren einer Definition kann Ihnen helfen.

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

Oder für die beste Leistung die verwendet werden, wenn rekursiven statment:

def Question(): 
question = raw_input("Python or Ruby?") 
if question == "Python": 
    print "Correct" 
    return 1 
print "nope" 
return Question() 

`