【问题标题】:How to check if the value of a variable in a loop is equal to the previous value in Python?如何检查循环中变量的值是否等于 Python 中的前一个值?
【发布时间】:2020-04-05 21:31:24
【问题描述】:

如果我有一个运行 Python 循环的函数:

def read_progress():
    while True:
        with open('progress.txt', 'r') as f:
            lines = f.readlines()
            time = lines[-5].split('=')[-1].split('.')[0]
            time.sleep(1)

如果是这种情况,我如何检查time 是否与上次相同并跳出循环(或使函数不执行任何操作)?

我在想这样的事情:

def read_progress():
    previous_time = '00:00:00'
    while True:
        if previous_time == time:
            break
        with open('progress.txt', 'r') as f:
            lines = f.readlines()
            time = lines[-5].split('=')[-1].split('.')[0]
            time.sleep(1)
            previous_time = time

但是if previous_time == time 不会总是正确的,因为我让previous_time 等于time?我觉得这样的事情很难理解,所以如果有人可以编辑错误的代码,我将不胜感激,这样我就可以实现我想要的:)

【问题讨论】:

  • 听起来你需要第二个变量来存储 time_previous 或者让 time 变量存储一个元组,其中一个是当前的,另一个是前一个。需要将以前的时间存储在某个地方以便进行比较。
  • 不要将变量命名为time,因为它会影响内置; time.sleep(1) 将失败。
  • @Mike 我已经编辑了问题以展示我的想法,但由于我给出的原因,我认为它不会起作用。发现很难理解如何做到这一点。如果你能写出能让我实现这一目标的代码,我将不胜感激:)
  • 您的想法可行,但if 语句需要位于将time 设置为新内容的行之后,以及设置previous_time = time 的行之前
  • @Stuart 这很有道理!谢谢斯图尔特。

标签: python python-3.x loops while-loop


【解决方案1】:

正如@Stuart 所纠正的,需要移动 if 语句。这是解决方案:

def read_progress():
    previous_time = '00:00:00'
    while True:
        with open('progress.txt', 'r') as f:

            lines = f.readlines()
            current_time = lines[-5].split('=')[-1].split('.')[0]

            if previous_time == current_time:
                break

            previous_time = current_time

            time.sleep(1)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-28
    • 2019-11-17
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 2014-04-14
    相关资源
    最近更新 更多