python - 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)
我发现这可以改进或纠正。
解决方案
我可以看到您的代码存在一些问题:
has_initially_increased
永远不会True
在 else 分支中设置为(第一个 if/else 级别)。由于has_initially_increased
被初始化为False
, if 语句中的代码块将永远不会被执行。如果您修复了第一个点,如果
current_number
低于starting_number
,这将终止循环,但这并不意味着您的条件得到满足(达到给定的峰值,然后降低到 50 的底值)。那么为什么要在这里休息呢?中断的另一个条件是最高峰值与当前值之间的差异为 50,但没有检查您是否达到预期峰值。
最后,你的count
变量的目的是什么?这似乎根本没有使用。
推荐阅读
- jquery - 停止 .on() 事件并在函数完成后重新初始化
- python - 尝试实施梯度下降
- java - 如何通过 gradle 插件强制执行这种模式?
- swift - 如何从 tableView 单元格中显示的标签打印 .text?
- r - 使用 Shiny 和 Flexdashboard 创建相互依赖的输入
- perl - 如何在匹配之前和之后替换字符
- three.js - THREE.js 无法导入模块
- c++ - 为什么 memory_order_release 支持直到 C++20?
- python - seleniumpython 下拉列表 div
- angular - Angular HttpClient 不发送 gettter 提供的属性