打印在STDOUT中有“No Output”

2024-06-12 09:02:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在用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)

现在我很迷茫,不知道我要修什么。谢谢你的帮助。在


Tags: tostepstdoutsysstepslevelprintelif
1条回答
网友
1楼 · 发布于 2024-06-12 09:02:23

让我们在这里尝试一些调试:
我知道这是一个坏主意,当你在处理大的解决方案时,不管怎样,当你
运行这段代码时,你会发现你永远得不到这种情况 elif step_ud="D",因为它将检查elif sea_level==0并继续for循环。在

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":
        print "U"
        sea_level += 1
    elif sea_level == 0:
        print "0 sea"
        valleys += 1
    elif step_ud == "D":
        print "D"
        sea_level -= 1
    elif sea_level == 0:
        print "0 sea 2"
        valleys += 1
    print sea_level

以下是我在比赛中提交的解决方案:

^{pr2}$


我的想法是:


输出

C:\Users\bhansa\Desktop\Stack>python valley.py
8
DDUUDDUDUUUD
[-1, -2, -1, 0, -1, -2, -1, -2, -1, 0, 1, 0]
2

请参阅上面的列表,如果有0,这意味着gary再次处于See级别
请检查元素0之前的值是否为负,则确定它来自山谷。在

我希望对你有帮助。在

相关问题 更多 >