如何在Python中只执行一次if语句?

2024-10-01 07:38:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我当前正在抓取一个网页,并且某个变量minute每隔几秒钟就会更改一次。这个minute位于一个永远运行的def内。如果,例如,minute == 80,if语句只运行一次,我该怎么做呢?在

代码如下:

def login(): # necesarry for this
// stuff
return r

def run(r):
    //stuff
    minute_soup = soup.find_all("span", {"class":"clock-period"})
    minute = minute_soup[0].text

    if minute == 80:
        print(minute)

    time.sleep(10)

r = login()
while True:
   run(r)  

目前,每一次minute等于80,它一遍又一遍地做同样的事情,每10秒直到{}不等于80。当minute等于80时,有没有办法让它做一次呢?在


Tags: run代码网页forreturnifdeflogin
3条回答

应该是这样的:

flag = true
def run(r):
    if r == 80:
        if flag:
            flag = false
            //More stuff
    else:
        flag = true

我建议您研究事件处理,因为无限循环通常可以通过使用事件来解决,这会导致更干净的代码

正如我从您的问题中了解到的,您可以使用flag,当第一时间分钟变为80时,将其设置为真,则{}将不再执行:

def login(): # necesarry for this
// stuff
return r

def run(r):
    //stuff
    minute_soup = soup.find_all("span", {"class":"clock-period"})
    minute = minute_soup[0].text
    flag = False

    if (minute == 80 and !flag):
        flag = True
        print(minute)

    time.sleep(10)

r = login()
while True:
   run(r)  

您可以使用参数来保存标志:

def run(r):
    //stuff
    minute_soup = soup.find_all("span", {"class":"clock-period"})
    minute = minute_soup[0].text

    if minute == 80 and r.flag:
        r.flag = False
        print(minute)
    if minute != 80:
        r.flag = True

    time.sleep(10)

r = login()
r.flag = True
while True:
   run(r) 

相关问题 更多 >