大叔肖 发表于 2021-6-23 16:25:05

好汉们给看看,使用定时器后程序不对头

直接上代码:

def DingShi():
    import time
    while True:
      time_now = time.strftime("%H:%M:%S", time.localtime())
      if time_now == "16:19:01":         #此处设置每天定时的时间
            canshu1()
            time.sleep(2)                  # 因为以秒定时,所以暂停2秒,使之不会在1秒内执行多次
def canshu1():
    print("参数一")
    return 3
def canshu2(a):
    print("参数二")
    b=2+a
    print(b)

DingShi()
a=canshu1()
canshu2(a)


我觉得应该打印出5,实际上只打印了”参数一“
英雄们教教俺!

逃兵 发表于 2021-6-23 16:30:27

DingShi函数是个死循环,他没有退出
加个break

def DingShi():
    import time
    while True:
      time_now = time.strftime("%H:%M:%S", time.localtime())
      if time_now == "16:19:01":         #此处设置每天定时的时间
            canshu1()
            break                  # 因为以秒定时,所以暂停2秒,使之不会在1秒内执行多次
def canshu1():
    print("参数一")
    return 3
def canshu2(a):
    print("参数二")
    b=2+a
    print(b)

DingShi()
a=canshu1()
canshu2(a)

大叔肖 发表于 2021-6-23 16:35:29

逃兵 发表于 2021-6-23 16:30
DingShi函数是个死循环,他没有退出
加个break

大侠,严重感谢啊!

大叔肖 发表于 2021-6-23 16:37:04

逃兵 发表于 2021-6-23 16:30
DingShi函数是个死循环,他没有退出
加个break

大侠,5是打印出来了。但是我发现canshu1()被执行了2次,这有办法吗?

逃兵 发表于 2021-6-23 16:45:51

在Dingshi函数中,canshu1()执行了第一次
在a=canshu1()中,canshu1()执行了第二次
你的代码逻辑本身就执行了两次
要只执行一次的话可以这么改

def DingShi():
    global a
    import time
    while True:
      time_now = time.strftime("%H:%M:%S", time.localtime())
      if time_now == "16:19:01":         #此处设置每天定时的时间
            a = canshu1()
            break                  # 因为以秒定时,所以暂停2秒,使之不会在1秒内执行多次
def canshu1():
    print("参数一")
    return 3
def canshu2(a):
    print("参数二")
    b=2+a
    print(b)

DingShi()
canshu2(a)

大叔肖 发表于 2021-6-23 17:00:42

感谢大侠,俺是个初学者,再次感谢大侠的热情帮助。{:10_257:}
页: [1]
查看完整版本: 好汉们给看看,使用定时器后程序不对头