AND运算符不在while循环中工作 - Python

时间:2017-09-19 21:41:44

标签: python python-3.x

这个python脚本应该在所需的时间关闭计算机,但问题是在第9行,如果'小时'等于当前小时,而不是程序没有查看分钟。我应该添加或更改什么? 感谢。

import subprocess
import datetime as dt
import time

hour = dt.datetime.now().hour
minute = dt.datetime.now().minute
print("Your computer is about to get shutdowned")

while hour != 23 and minute != 28:
    time.sleep(2)
    print("not yet!")

subprocess.call(["shutdown", "/s"])

4 个答案:

答案 0 :(得分:1)

正如from appJar import gui count=10 def pressed(btnName): global count count-=1 win.setLabel("lb1","Count= "+ str(count)) if count == 0: win.after(500, win.stop) win = gui() win.addLabel("lb1", "empty") win.addButton("PRESS", pressed) win.go() 所述,您在启动程序时设置了user2357112hour,但从未再次更新过。

这应该有效:

minute

如果需要关机,您不需要每2秒检查一次。两分钟就足够了。

答案 1 :(得分:0)

你应该在循环中获得小时和分钟,否则你在启动脚本时只获得一个值,并且值永远不会更新......

尝试类似:

Book A: <Users Rating>
Book B: <BLANK>
Book C: <BLANK>

答案 2 :(得分:0)

改变&#39;和&#39;到&#39;或&#39;。你还必须在循环内更新小时和分钟。

答案 3 :(得分:0)

实际上,您需要在23:28计算下一个截止日期:

import datetime
import time

now = datetime.datetime.now()
due_date = now.replace(hour=23, minute=28)
if due_date < now:
    due_date += datetime.timedelta(days=1)

然后,你可以倒计时了:

print("Your computer is about to get shutdowned...")
while datetime.datetime.now() < due_date:
    time.sleep(2)
    duration = due_date - datetime.datetime.now()
    print("... in {:d} seconds".format(int(duration.seconds)))