【问题标题】:How to use the return statement in a while loop?如何在while循环中使用return语句?
【发布时间】:2019-06-12 13:18:58
【问题描述】:

在我的程序中,我有一个定时器功能,它使用一个while循环。我希望它在循环时从开始返回过去的时间,而不停止函数。

def timer():
    time_ = 0
    while True:
        time.sleep(1)
        time_ += 1
        return time_

但是 return 打破了循环。 如果时间是 x,我需要类似 return 来启动另一个函数:

if timer() < 20:    
    # do something
else:
    # do something else

【问题讨论】:

标签: python-3.x python-3.7


【解决方案1】:

使用yield。类似于return,但可以循环使用。更多详情请见What does the "yield" keyword do?

def timer():
    time_ = 0
    while True:
        time.sleep(1)
        time_ += 1
        yield time_

for i in timer():
    if i < 20:    
        # do something
    else:
        # do something else

【讨论】:

    【解决方案2】:

    每次调用 timer() 函数时都会重置 time_ = 0

    尝试在函数外部实例化time_,以便下次调用timer()function 时它可以保持递增。

    time_ = 0
    
    def timer ():
        time_ += 1
        return time    
    

    【讨论】:

      猜你喜欢
      • 2017-11-17
      • 2021-09-28
      • 1970-01-01
      • 2013-01-01
      • 2015-09-14
      • 2020-12-01
      • 2017-05-02
      • 2015-07-06
      • 1970-01-01
      相关资源
      最近更新 更多