Start learning free

LESSON 234 OF 673 · SETS

Removing from a Set and Looping Over It in Python

Lesson

TL ; DR:

discard(x) takes x out of a set. A for loop visits every value once, in no fixed order.


colors = set(["red", "blue", "green"])
colors.discard("blue")
colors.discard("pink")     # not in it, nothing happens

for color in colors:
    print(color)           # red and green, in any order


Full lesson:

s.discard(x) removes x from the set s. If x isn't in it, nothing happens.

Python also has s.remove(x). It works the same when x is there. When it isn't, remove stops the program with a KeyError. Use discard when you aren't sure.

for x in s visits each value of the set once. The order isn't fixed. It may differ from the order you added the values in, and from one run to the next.

So loop over a set when the order doesn't matter. A total, a count and a check are fine.

Don't remove values from a set while you loop over it. Python stops with a RuntimeError. Remove first, then loop.


Your task

In a word game, the set found holds the words a player found. The words "qqq" and "zzz" aren't allowed. Remove both from found.

The player never found "zzz", so removing it changes nothing.

Then add up the points. A word scores one point per letter. Loop over found and add each word's length to score.

The code already prints how many words are left, and the points.

Expected output:

4 words
14 points
STEP 1 OF 3
    Ctrl + Enter to check