Peter, why did you reject the lovely first one (which needs only a bit of work on the indentation) for the well, shall we say, “complicated”, second??
The second, for one thing, uses the ‘while - else’ construction, something you will rarely see. Under what condition do you want to see “NO DICE”?
Follow the code with lst = [4, 8, 11]
Grab the first number from the list. if it is even, pop lst. Now lst = [8, 11]
Now, lst is 8, so the next block
while lst % 2 == 0: # This condition is true since lst is 8 return lst
executes, returning lst, or [8, 11].
Remember that return returns the desired value and then halts the function.
… and what is the for loop supposed to accomplish?