首页 > 解决方案 > python找到数字之间的差距

问题描述

每秒,数字可以上下移动 1,这来自 api。

假设数字从 0 开始,一直到 100。然后当它逐渐减少到 50 时,我会停止程序。

因此,每当数字首先从任何起始数字增加并在某个数字达到峰值然后发现它像上面的示例(100-50 = 50)一样减少-50时,我必须停止它。我试图在代码中实现这一点,但需要一些帮助。

starting_number = self.api.get_current_number()
current_peak_number = 0
count = 0
has_initially_increased = False

While True:
    current_number = self.api.get_current_number()

    if has_initially_increased is False:
        if current_number > starting_number:
            current_peak_number = current_number
            has_initially_increased = True
            pass
        else:
            break
    else:
        if current_peak_number <= current_number:
            current_peak_number = current_number
        else:
            gap = current_peak - current_number
            if gap == 50:
                break

    count += 1
    time.sleep(1)

我发现这可以改进或纠正。

标签: python

解决方案


我可以看到您的代码存在一些问题:

  1. has_initially_increased永远不会True在 else 分支中设置为(第一个 if/else 级别)。由于has_initially_increased被初始化为False, if 语句中的代码块将永远不会被执行。

  2. 如果您修复了第一个点,如果current_number低于starting_number,这将终止循环,但这并不意味着您的条件得到满足(达到给定的峰值,然后降低到 50 的底值)。那么为什么要在这里休息呢?

  3. 中断的另一个条件是最高峰值与当前值之间的差异为 50,但没有检查您是否达到预期峰值。

最后,你的count变量的目的是什么?这似乎根本没有使用。


推荐阅读