aszchong 2023-01-26 04:27 采纳率: 66.7%
浏览 74
已结题

python的while循环如何只执行一次打印并且不破坏循环

我用python的while Ture死循环来持续监控收盘价,如果有变动(大于0),我希望只打印一次,并且不退出循环,继续监控,如何只执行一次打印并且不破坏循环(下次遇到变动仍只打印一次)?谢谢!
补充:目前sleep(0.5)会打印两次,如果改成sleep(1)是会打印一次,但频率低了跟不上价格的变动,会导致价格出错。

def spj():  # 收盘价
    if qgm() == '00':  # 时间为00的时候(每分钟一次)
        return jg()   # 返回价格


def close():  # 收盘价
    while True:  # 循环执行
        if spj() != None:   # 如果价格不为空
            break  # 跳出循环
        sleep(0.01)  # 循环频率
    return float(spj())   # 返回收盘价


while True:                # 持续监视
    if close() > 0:         #  如果收盘价变动
        print(close())     #  打印收盘价
    sleep(0.5)            #  监视频率

  • 写回答

2条回答 默认 最新

  • 「已注销」 2023-01-26 07:32
    关注

    你可以使用一个变量来记录上一次收盘价,并在每次循环中检查当前收盘价是否与上一次收盘价相同。如果不同,则打印当前收盘价并更新上一次收盘价变量。

    last_close = None
    while True:
        current_close = close()
        if current_close > 0 and current_close != last_close:
            print(current_close)
            last_close = current_close
        sleep(0.5)
    
    

    注意: 上面的代码还有其他问题, 例如如果价格一直是0的话,会导致死循环。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月1日
  • 已采纳回答 2月1日
  • 创建了问题 1月26日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。