2017-02-08 5 views
1

Im Folgenden habe ich einige Code eingefügt, der eindeutig falsch für alle, aber die meisten Neulinge von Python-Benutzer ist.FOR Schleife kann nicht funktionieren

Würden die Leute so nett sein, dem Code bitte ein paar Verbesserungen des Rookies vorzuschlagen? Wie logische Variablen Namen, Kommentare hinzufügen, etc.

Korrekturen der Fehler im Code wird auch geschätzt, wie in der Anfrage in der Frage.


Ich habe ein Problem mit der Schleife unter dem Weg zur Arbeit. Hat jemand einen Vorschlag, was falsch ist? Im Moment werde ich gefragt, und dann zeigt der Code einen Fehler.

Was passieren soll ist, dass ich eine Frage gestellt werde, und dann 3 Chancen haben, richtig zu antworten.

a = input("What is the opposite to night?") 

for xx in range(0,3) 
    if a == Night: 
    print("That's right! Well done") 
    else: 
    print("Sorry, try again") 
+2

Wenn um Hilfe zu bitten, bitte alle Details über den Fehler kopieren Sie in die Frage bekommen: ** ** genaue Fehlermeldung, idealerweise Kopie kleistert, Aktion (en), die zu dem Fehler führen, usw. – fvu

+7

Sie sollten sicherstellen, dass Sie auch der nächsten Generation von Informatikern eine gute Frage stellen. –

+1

https://codeblog.jonskeet.uk/2012/11/24/stack-overflow-question-checklist/ ist eine ausgezeichnete Liste von Fragen, die Sie sich fragen sollten, bevor Sie eine Frage stellen. – fvu

Antwort

3

Bitte siehe unten Korrektur:

a = input("What is the opposite to night?") 

for x in range(0,3): # must have colons at the end of for statement 
    if a.lower() == "night": # we should accept all cases 
     print("That's right! Well done") # indentation required in if statement 
    else: 
     print("Sorry, try again") # indentation required also 
+0

Diese Antwort ist nicht korrekt ... nicht einmal in der Nähe. Siehe @ Willem-Van-Onsem Antwort. – TemporalWolf

-2
for xx in range(0,3) 

for x in range(0,3): 

sein sollte, und darüber hinaus kann (wenn auch sehr minimal mit einem kleinen Bereich) optimiert werden, indem

for x in xrange(3) 

Schließlich braucht Nacht so in Anführungszeichen eingewickelt werden:

if a == "Night" 
+0

'xx' vs' x' ist nicht wirklich relavant –

+0

@ cricket_007 wahr, es fügt zur Lesbarkeit hinzu und ich fügte den Doppelpunkt in dieser Zeile hinzu. –

+0

Sicher, aber das sind nicht die einzigen Probleme :) –

3

ich denke, es wäre mehr wert zu fragen, was Recht ist:

  • Die input(..) nur einmal genannt wird, um eine nicht in der Schleife;
  • gibt es kein Doppelpunkt am Ende der for Schleife;
  • sollten Sie verwenden Sie eine Zeichenfolge, um die Antwort zu vergleichen, so "Night";
  • die Zeichenfolge eigentlich sollte gegen "day" vergleichen da ist das die richtige Antwort;
  • die Antwort ist besser getestet case-insensitive;
  • sollte man nicht "try again" sagen, wenn es die letzte Chance war;
  • ist es "gegenüber von" (großes Lob an @TemporalWolf);
  • gibt es nein break wenn die Antwort richtig ist; und
  • die Einrückung ist falsch.

So wäre ein fix sein:

for xx in range(0,3): # colon 
    a = input("What is the opposite of night?") # input in the loop 
    if a.lower() != "day": # comparing against "day" (string) 
     if xx < 2: #only print try again if it is not the last chance 
      print("Sorry, try again") #indentation 
     else: 
      print("Too bad, well goodbye.") 
    else: 
     print("That's right! Well done") # indentation 
     break # break if correct

Zusätzliche Vorschlag: Sie range(3) statt range(0,3) verwenden können, die kürzer ist.

+0

Was ist das Gegenteil ** von ** Nacht :) auch: 'für xx im Bereich (3)' funktioniert ganz gut. Und wenn Sie keine spezielle Extraverspottung hinzufügen, ist 'for _ in range (3)' besser, da es eindeutig ist, dass Sie die loop-Variable nicht verwenden. – TemporalWolf

+0

@TemporalWolf: eigentlich sind wir hier zu überprüfen, dass wir das letzte Mal looping sind. Nice Spotting der Grammatikfehler :). –

+0

Ich denke, es ist erwähnenswert, dass "Bereich (0,3)" und "Bereich (3)" äquivalent sind. Auch könnte das von/zu * eine US/UK-Sache sein. – TemporalWolf

0
for _ in range(3): print(["Sorry, try again", "That's right! Well done"] 
[input("What is the opposite to night?").lower()=='day']) 

Nicht alle Antworten hilfreich sein wird, auch wenn sie die "richtige" Antwort

&

Wenn Sie 'ausleihen' Code von Stackoverflow erzeugen, werden Sie wahrscheinlich herausgefunden werden.