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 pointsFree plan: 30 tutor messages. PRO is unlimited.
