代码:
import datetime
data = [('09', '55', None, 'AC is on', None), ('10', '00',None, 'AC is on', None),('10', '13','fan is on', 'AC is on', 'light is on')]
def calc(data):
print(data) #prints the whole table
while True:
h=datetime.datetime.today().strftime("%H")
mi=datetime.datetime.today().strftime("%M")
# z=[(i[2],i[3],i[4]) for i in data if i[0] == h and i[1]==mi]
for i in data:
if i[0] == h and i[1]==mi:
print (i[2],i[3],i[4])
# sleep(60)
break
if __name__ == '__main__':
calc(data)
“数据”中的前2个元素是用户输入的小时和分钟。该代码应采用用户输入的值,即此处的数据。并应检查当前时间,并按代码所示打印i [2],i [3],i [4]。
1)我只想将值打印一次。但是,它会持续检查并打印1分钟的值。 break语句不起作用。
2)此外,是否可以通过某种方式检查而不打印任何内容?
答案 0 :(得分:1)
如果我正确理解,您希望程序运行,直到找到当前时间与i
中的元组(data
)中指定的时间之间的匹配为止:{{1} },然后打印其余的元组:(data[i][0], data[i][1])
i[2:5]
在break
循环范围内,而不是在for
循环中。您退出while
循环,是的,而不是无限的for
循环。while True
,然后设置while match_not_found:
,并在您的match_not_found = True
语句前加上一行match_not_found = False
。break
,以排除if
个已打印的项目喜欢:
None
答案 1 :(得分:0)
我在代码上做了很少的更改。
我不知道您为什么使用While = True。因此,它不会脱离循环。所以我将其删除了
只需将else语句添加到check中,就可以将其删除
import datetime
data = [('09', '55', None, 'AC is on', None), ('10', '00',None, 'AC is on', None),('10', '13','fan is on', 'AC is on', 'light is on')]
def calc(data):
print(data) #prints the whole table
# while True:
h=datetime.datetime.today().strftime("%H")
print(h)
mi=datetime.datetime.today().strftime("%M")
print(mi)
# z=[(i[2],i[3],i[4]) for i in data if i[0] == h and i[1]==mi]
for i in data:
if i[0] == h and i[1]==mi:
print (i[2],i[3],i[4])
else:
print ("It does NOT match")
# sleep(60)
break
if __name__ == '__main__':
calc(data)
已编辑(现在可以使用):
import datetime
data = [('09', '55', None, 'AC is on', None), ('10', '00',None, 'AC is on', None),('10', '52','fan is on', 'AC is on', None)]
def calc(data):
print(data) #prints the whole table
while True:
h=datetime.datetime.today().strftime("%H")
mi=datetime.datetime.today().strftime("%M")
# z=[(i[2],i[3],i[4]) for i in data if i[0] == h and i[1]==mi]
for i in data:
if i[0] == h and i[1]==mi:
print (i[2],i[3],i[4])
# sleep(60)
exit()
if __name__ == '__main__':
calc(data)