私はHackerRankにハイカーで歩いていた谷の数をカウントするためにコードを書いています。今、このような感じです。印刷物はSTDOUTに "No Output"があります
#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)
私がコードを実行すると、出力は表示されません。ゲーリーは1つの谷を歩いているだけなので、私の予想されるアウトプットは1でした。
用語の谷は次のように定義されていました。 「谷は、海面からステップダウンして海面までステップで始まる、海面下の連続したステップの空でないシーケンスです。
質問は次のように書かれました: 「彼の最後のハイキング中にゲイリーの階段が上がったり下がったりすると、彼が歩いた谷の数を見つけて印刷してください。私はこれら3つのポストを見てとっている
:
How to flush output of Python print?
python `print` does not work in loop
私はまた、いくつかの他の方法を試してみましたが、彼らは助けていません。これらは私が試したことです。
sysモジュールをインポートし、sys.stdout.flush()関数を使用してstdoutをフラッシュしました。
import sys
...
#Loop with lines to determine whether it's a valley.
...
print(valleys)
sys.stdout.flush()
私自身もstdoutをフラッシュする機能を試しましたが、それでも機能しませんでした。
def my_print(text):
sys.stdout.write(str(text))
sys.stdout.flush()
次に、印刷後にこの関数を使用してフラッシュしました。
import sys
...
#Loop with lines to determine whether it's a valley.
...
print(valleys)
my_print(text)
現在、私は修正する必要があることを知っています。助けてくれてありがとう。
あなたの 'if'テストはすべて排他的です.4つのブランチのうちの1つだけが 'step'ごとに実行され、すべてのステップが' U'または 'D'なので、最後のブランチ' elif sea_level == 0: 'U'や' D'が枝分かれする前に枝分かれするので絶対に実行することはできません。 print文は 'elif sea_level == 0:'ブランチの内部にあるので、決して実行されません。ドローイングボードに戻る... – TessellatingHeckler
私の更新された答えを確認し、私のプログラムについての説明を追加しました。 – bhansa
私は@TessellatingHecklerを理解しています。説明ありがとう。 –