Panini (Panini SpA of de Panini Group) is een Italiaans bedrijf gespecialiseerd in de productie van verzamelbare stickers. Het bedrijf werd in 1961 opgericht door de gebroeders Panini en is gevestigd in Modena, Italië. Naast stickers produceert Panini ook stripverhalen en tijdschriften onder de naam Panini Comics. Panini verwierf in de jaren 60 bekendheid door zijn voetbalstickers. In de decennia die volgden werden de stickers van Panini een cultureel fenomeen en vaak ook beschouwd als een uiting van nostalgie. Tegenwoordig maakt de firma ook stickers van films en computergames.

Frank Bosmans
Frank Bosmans

152, Frank Bosmans, 1993-1994

Een stickerboek van Panini is meestal zo goed als gratis. Voor een gesloten pakje stickers dien je wel te betalen. Je kan nooit kiezen welke sticker je precies koopt. Zo kan het gebeuren dat je van een bepaalde sticker dubbels hebt. Betaald voor niets of ideaal ruilmateriaal?

In deze oefening gaan we stickers verzamelen en terzelfder tijd van elke sticker bijhouden hoeveel dubbels we hebben. Panini geeft elke sticker van een boek een uniek nummer. Dat doen we niet. Om de leesbaarheid te verhogen, werken we hier enkel met familienamen. Je mag aannemen dat elke familienaam uniek is.

Je verzamelt de stickers die je in het stickerboek plakt in een set.

{'Staelens', 'Bosmans', 'Weber', 'Scifo'}

Wanneer je een nieuwe sticker krijgt die reeds ingeplakt werd (of in de set zit), dan voeg je de sticker toe aan een dictionary van dubbels. In de dictionary van dubbels zijn het aantal dubbels van de stickers de sleutels. Bij een sleutel kunnen dan meerdere namen (in een set) voorkomen. Hier hebben we van Scifo en Weber juist één sticker dubbel. Er komen geen sleutels voor met als bijhorende waarde een lege set.

{
  1: {'Scifo', 'Weber'},
  4: {'Bosmans'}
}

Opgave

Programmeer de functie verzamel. De eerste parameter van de functie is de naam van de speler op een aangekochte sticker. De twee parameter is het stickerboek (een set van namen). De laatste parameter is een dictionary van dubbels.

De functie geeft een tuple terug met daarin het stickerboek (een set van namen) en een dictionary van dubbels nadat de sticker in de parameter werd toegevoegd.

Voorbeeld

>>> verzamel('Bosmans',set(),{})
({'Bosmans'}, {})
>>> verzamel('Weber',{'Bosmans'},{})
({'Weber', 'Bosmans'}, {})
>>> verzamel('Bosmans',{'Weber', 'Bosmans'},{})
({'Weber', 'Bosmans'}, {1: {'Bosmans'}})

Bronnen

Wikipedia (2018). 1