Ich habe Code in HackerRank geschrieben, um zu zählen, wie viele Täler, die ein Wanderer (Gary) in einer Wanderung durchging. Im Moment sieht es ungefähr so aus.Drucken hat "Keine Ausgabe" in STDOUT
#Defining variables for later use and a list of Gary's steps
steps = ["U", "D", "D", "D", "D", "D", "U", "U"]
sea_level = 0
valleys = 0
#For loop to calculate how many valleys Gary hiked through
for step in steps:
step_ud = step
if step_ud == "U":
sea_level += 1
elif sea_level == 0:
valleys += 1
elif step_ud == "D":
sea_level -= 1
elif sea_level == 0:
valleys += 1
print(valleys)
Wenn ich den Code ausführen, erhalte ich jedoch keine Ausgabe. Meine erwartete Leistung war 1, da ich wusste, dass Gary nur durch ein Tal ging. Der Begriff Tal wurde definiert als: "Ein Tal ist eine nichtleere Abfolge von aufeinanderfolgenden Schritten unterhalb des Meeresspiegels, beginnend mit einem Abstieg vom Meeresspiegel und endend mit einem Anstieg auf Meereshöhe."
Die Frage wurde geschrieben als: "Angesichts Gary Reihenfolge der auf und ab Schritte während seiner letzten Wanderung, finden und drucken Sie die Anzahl der Täler, durch die er ging."
Ich habe einen Blick auf diese drei Beiträge genommen:
How to flush output of Python print?
python `print` does not work in loop
Ich habe auch einige andere Methoden ausprobiert, aber sie haben nicht geholfen. Das sind Dinge, die ich ausprobiert habe.
Ich importierte das sys-Modul und verwendete die sys.stdout.flush() - Funktion, um das stdout zu leeren.
Ich habe auch versucht, meine eigene Funktion der Spülung der Stdout, aber das hat auch nicht funktioniert.
def my_print(text):
sys.stdout.write(str(text))
sys.stdout.flush()
Dann habe ich die Funktion nach dem Drucken zu spülen.
import sys
...
#Loop with lines to determine whether it's a valley.
...
print(valleys)
my_print(text)
Derzeit bin ich ziemlich verloren zu wissen, was ich zu beheben habe. Danke für die Hilfe.
Ihre 'if' Tests sind alle exklusiv, nur eine der vier Verzweigungen wird für jeden 'Schritt' ausgeführt, und da alle Schritte 'U' oder' D' sind, ist die letzte Verzweigung 'elif sea_level == 0: 'kann niemals laufen, weil die' U' oder 'D' sich verzweigen bevor es definitiv passt. Da die print-Anweisung in diesem 'elif sea_level == 0:' Zweig liegt, wird sie auch nicht ausgeführt. Zurück zum Zeichenbrett ... – TessellatingHeckler
Überprüfen Sie meine aktualisierte Antwort, Beschreibung über mein Programm hinzugefügt. – bhansa
Ich verstehe jetzt @TesselingHeckler. Danke für die Erklärung. –