How to Use a Return Statement in a for Loop?

How to Use a Return Statement in a for Loop?

So I am working on a chat-bot for discord, and right now on a feature that would work as a todo-list. I have a command to add tasks to the list, where they are stored in a dict. However my problem is returning the list in a more readable format (see pictures).

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

The tasks are stored in a dict called cal. But in order for the bot to actually send the message I need to use a return statement, otherwise it'll just print it to the console and not to the actual chat (see pictures).

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

Here is how I tried to fix it, but since I used return the for-loop does not work properly.

So how do I fix this? How can I use a return statement so that it would print into the chat instead of the console?

1

3 Answers

Using a return inside of a loop will break it and exit the function even if the iteration is still not finished.

For example:

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

In some cases we need to break the loop if some conditions are met. However, in your current code, breaking the loop before finishing it is unintentional.

Instead of that, you can use a different approach:

Yielding your data

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

You can call it like:

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

or you can iterate through it:

for v, k in show_todo(): ...
Sophia Al-Mansoor
Author

Sophia Al-Mansoor

Sophia analyzes international trade, startup ecosystems, retail transformation, and supply chain logistics for modern digital publications.