我一直在用HackerRank编写代码来计算一个徒步旅行者(加里)在徒步旅行中走过了多少个山谷。现在看起来像这样。在
#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个山谷。在
山谷一词的定义是: 山谷是指在海平面以下连续的一系列非空的台阶,从海平面下降到上升到海平面
问题是这样写的: “考虑到加里上次徒步旅行时的一系列上下台阶,找出并打印出他走过的山谷数。”
我看了这三篇文章:
How to flush output of Python print?
python `print` does not work in loop
我也试过其他一些方法,但都没用。这些都是我尝试过的。在
我导入了sys模块并使用系统stdout.flush()函数刷新stdout。在
^{pr2}$我也尝试过自己创建一个刷新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)
现在我很迷茫,不知道我要修什么。谢谢你的帮助。在
让我们在这里尝试一些调试:
我知道这是一个坏主意,当你在处理大的解决方案时,不管怎样,当你
运行这段代码时,你会发现你永远得不到这种情况
elif step_ud="D"
,因为它将检查elif sea_level==0
并继续for循环。在以下是我在比赛中提交的解决方案:
^{pr2}$我的想法是:
输出
请参阅上面的列表,如果有
0
,这意味着gary再次处于See级别请检查元素
0
之前的值是否为负,则确定它来自山谷。在我希望对你有帮助。在
相关问题 更多 >
编程相关推荐