Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从给定的元组列表中提取和比较数据?_Python_Python 3.x_List_Tuples_Python Datetime - Fatal编程技术网

Python 如何从给定的元组列表中提取和比较数据?

Python 如何从给定的元组列表中提取和比较数据?,python,python-3.x,list,tuples,python-datetime,Python,Python 3.x,List,Tuples,Python Datetime,代码: “数据”中的前两个元素是用户输入的小时和分钟。代码应采用用户输入的值,即此处的数据。并应检查当前时间,并应打印i[2],i[3],i[4],如代码所示 1) 我只想把值打印一次。但是,它会持续检查并打印值1整分钟。break语句不起作用 2) 另外,是否可以通过某种方式检查而不打印“无” 我对代码做了一些更改 我不知道你为什么用While=True。正因为如此,它并没有脱离循环。所以我把它拿走了 刚刚添加了else语句以供检查,您可以将其删除 import datetime data

代码:

“数据”中的前两个元素是用户输入的小时和分钟。代码应采用用户输入的值,即此处的数据。并应检查当前时间,并应打印i[2],i[3],i[4],如代码所示

1) 我只想把值打印一次。但是,它会持续检查并打印值1整分钟。break语句不起作用


2) 另外,是否可以通过某种方式检查而不打印“无”

我对代码做了一些更改

我不知道你为什么用While=True。正因为如此,它并没有脱离循环。所以我把它拿走了

刚刚添加了else语句以供检查,您可以将其删除

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)
已编辑(现已生效):


如果我理解正确,您希望您的程序运行,直到找到当前时间与
数据中的一个元组(
I
):
(数据[I][0],数据[I][1])
)中指定的时间之间的匹配,然后打印元组的其余部分:
I[2:5]

  • 中断
    for
    循环范围内,而不是您的
    while
    循环。您退出
    for
    循环,是的,而不是您的无限
    while True
    循环
  • 我宁愿在match\u not\u found:
  • 时执行
    ,然后设置
    match\u not\u found=True
    ,并在
    break
    语句之前有一行
    match\u not\u found=False
  • 如果要使用元组的所有剩余项,可以使用列表切片
  • 我添加了一个额外的
    if
    ,以排除打印项目的
    None
  • 就像这样:

    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)
    

    如果当前时间是上午10:30,用户输入的时间为-data=[('10','31','fan is on','AC is on',none)]。然后,我们需要检查直到用户时间==当前时间,并打印“风扇打开”,“空调打开”,无。效果很好。谢谢顺便问一下,我们可以不打印none吗?这就是原因,我添加了while--如果当前时间是上午10:30,用户输入的时间为-data=[('10','31','fan is on','AC is on',none)]。然后,我们需要检查直到用户时间==当前时间并打印“风扇打开”,“空调打开”,无。@captainalooreptin“那么你的意思是,直到条件变为真,我们需要检查吗?”。如果是这种情况,请将while循环放回,并在If循环中添加
    exit()
    after print语句YUP。工作!谢谢你能告诉我为什么中断声明不起作用吗?为什么它会进入一个无限循环?@captainalooreport'in Break就是从循环中走出来。用简单的话来说就是退出执行。将答案标记为正确
    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)
    
    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
        match_not_found = True
    
        while match_not_found:
            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 ([j for j in i[2:5] if j != None])
                    match_not_found = False
                    break
    
    if __name__ == '__main__':
        calc(data)