如何在for循环中使用return语句?

发布于 2021-01-29 19:34:29

因此,我正在为不和谐而开发一个聊天机器人,现在正在开发一个可以用作待办事项列表的功能。我有一个命令可以将任务添加到列表中,并将它们存储在字典中。但是,我的问题是以更易读的格式返回列表(参见图片)。

def show_todo():
    for key, value in cal.items():
        print(value[0], key)

任务存储在一个dict称为中cal。但是,为了使bot实际发送消息,我需要使用一条return语句,否则它将仅将其打印到控制台而不是实际的聊天记录(参见图片)。

def show_todo():
    for key, value in cal.items():
        return(value[0], key)

这是我尝试解决的方法,但是由于我使用return了for循环,因此无法正常工作。

那么我该如何解决呢?如何使用return语句,以便将其打印到聊天记录中而不是控制台中?

关注者
0
被浏览
104
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    return即使循环尚未完成,使用循环的内部也会破坏循环并退出函数。

    例如:

    def num():
        # Here there will be only one iteration
        # For number == 1 => 1 % 2 = 1
        # So, break the loop and return the number
        for number in range(1, 10):
            if number % 2:
                return number
    >>> num()
    1
    

    在某些情况下,如果满足某些条件,我们需要打破循环。但是,在您当前的代码中,在完成循环之前先中断循环是无意的。

    除此之外,您可以使用其他方法:

    产生您的数据

    def show_todo():
        # Create a generator
        for key, value in cal.items():
            yield value[0], key
    

    您可以这样称呼它:

    a = list(show_todo())  # or tuple(show_todo())
    

    或者您可以遍历它:

    for v, k in show_todo(): ...
    

    将数据放入列表或其他容器

    将数据追加到列表中,然后在循环结束后返回:

    def show_todo():
        my_list = []
        for key, value in cal.items():
            my_list.append((value[0], key))
        return my_list
    

    或使用列表理解:

    def show_todo():
        return [(value[0], key) for key, value in cal.items()]
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看