首页 > 解决方案 > 如何在 If 语句中发出通知但在 Python 中继续 While 循环?

问题描述

当我使用电池电源或交流电源时,我正在使用 psutil 和 Python 来通知我。我有一个持续检查电池电量的while循环。我希望它在我们使用电池电源时通知我,但只有一次。如果我在任何地方声明变量 power_notification = 0,那么当 while 循环再次运行时,它将重置为 0。我如何保持计数,以便在我们重新使用 AC 之前它只通知我一次?我没有收到任何错误,但它会不断打印出我们正在使用电池供电。

import psutil

power_good = True

def check_power_status():
    power_notification = 0
    battery = psutil.sensors_battery()
    plugged_in = battery.power_plugged
    percent = str(battery.percent)

    if not plugged_in:
        if power_notification == 0:
            plugged_in = "We are on battery power."
            print(plugged_in + "\n" + "You have " + percent + "% of your battery remaining.")
            power_notification = 1
        else:
            power_good = False
            return power_good
    else:
        power_good = True
        return power_good

while power_good:
    check_power_status()

标签: pythonwhile-loop

解决方案


你需要让它一直运行,因为它daemon应该while一直运行True。所以我看不出任何使用power_good.

power_notification应该在函数之外保持它的值。

import psutil

power_notification = 0

def check_power_status():
    global power_notification
    battery = psutil.sensors_battery()
    plugged_in = battery.power_plugged
    percent = str(battery.percent)

    if not plugged_in:
        if power_notification == 0:
            plugged_in = "We are on battery power."
            print(plugged_in + "\n" + "You have " + percent + "% of your battery remaining.")
            power_notification = 1
    #AC plugged_in 
    else:
        power_notification = 0

while True:
    check_power_status()

推荐阅读