2016-11-08 7 views
1

Ich muss ein Zensurprogramm für meine CS-Klasse machen, und ich habe Probleme mit meiner while-Schleife (mit mir, ich bin ein Anfänger). Ich versuche es so einzurichten, dass ein Lehrer in der Lage sein wird, eine unbegrenzte Anzahl von Schülern in ihr Notenbuch aufzunehmen. Wir speichern es auch in einer Textdatei. Aus irgendeinem Grund, nachdem ich einen Namen eingegeben habe, fährt die Schleife nicht fort, sondern springt einfach zu der anderen if-Anweisung darunter. Danke für Ihre Hilfe.While-Loop Probleme

#input students 

studentnames=open("studentnames.txt","w") 
stu = input ("Would you like to input new students? (Yes or No) ") 
if stu == 'Yes' or 'yes': 
    while True: 
     add = input ("Please enter the names you would like to add to your registry. (Type stop when you're finished.) ") 
     studentnames.writelines(add) 

     if add == 'Stop' or 'stop': 
      break 

if stu == 'No' or 'no': 
    print ("Okay.") 


studentnames.close()   
+1

versuche 'if add.lower(). strip() == 'stop'' –

+3

' add ==' Stop 'oder' stop' ist nicht dasselbe wie 'add == ' Stop 'oder füge ==' stop' hinzu, letzteres ist was du wirklich willst. –

+1

Alle OR-Bedingungen sind falsche Syntax. – csmckelvey

Antwort

1

Ok. Das Problem ist, dass Python Linie

if add == 'Stop' or 'stop': 

als

if (add == 'Stop') or ('stop'): 

So. versteht Auch wenn add == 'Stop' False ist, wandelt Python 'stop' in True um, sodass es if-Anweisung trotzdem ausführt. Verwenden Sie stattdessen if add.lower() == 'stop':. (selbe in if stu == 'No' or 'no':)

+0

Und ich denke, Sie sollten 'if add.lower überprüfen() == 'stop': 'vor dem Schreiben in die Datei. Weil am Ende 'stop' in die Datei geschrieben wird. –