我正在尝试编写一个简单的程序,该程序将使用Python 3根据一天中的时间打开和关闭灯。
尝试在except KeyboardInterrupt:
循环中使用while
时,我不断收到语法错误。这是错误:
except KeyboardInterrupt:
^
SyntaxError: invalid syntax
由于我在在线文档中仔细检查了语法,因此我对自己在做错的事情不知所措,并且我想这里缺少一些了解。
这是完整的代码供参考:
#!/usr/bin/python
import time
import datetime
#set the start and end times you want the pin to be high
TimeStart = datetime.time(17,0,0)
TimeEnd = datetime.time(18,30,0)
#Define main fuction
def onoff():
while True:
if TimeEnd > datetime.datetime.now().time() and TimeStart < datetime.datetime.now().time() :
print ("Pin 18 High" )
else:
print ("Pin 18 Low" )
except KeyboardInterrupt:
# do nothing here
pass
print ("Error..... Quiting.....")
raise
sys.exit()
time.sleep(30)
onoff()
非常感谢!
答案 0 :(得分:1)
您不能在except
代码块之外使用try:....except...
语句。
https://docs.python.org/3.7/tutorial/errors.html#handling-exceptions
所以您可以将代码改写为
while True:
try:
if TimeEnd > datetime.datetime.now().time() and TimeStart < datetime.datetime.now().time() :
print ("Pin 18 High" )
else:
print ("Pin 18 Low" )
except KeyboardInterrupt:
# do nothing here
pass
print ("Error..... Quiting.....")
raise
sys.exit()
我还没有尝试过,但是本质上,
try
子句包装if语句,然后KeyboardInterrupt
语句将捕获任何except
。