* For-Schleifen gibt es nur in einer Aufgabe.
In dieser Aufgabe nehmen wir an, dass wir mit einem Discord-Bot Rollen verteilen wollen.
Hierbei ist das Ziel möglichst keine unnötigen Add- und Delete-Operationen durchzuführen.
Am Ende jeder Teilaufgabe sollen Sie die Ergebnis-Sets auf dem Terminal ausgeben.
Die Liste aller Rollen sei gegeben als:
available_roles_list = ["everyone", "Mitglied", "Ersti", "gaming", "memes", "LuDS", "TI", "ItSi", "SusProg"]
Wandeln Sie die Liste in ein Set um, um damit effizienter arbeiten zu können.
Speichern Sie das Set in der Variable available_roles_set
.
Geben Sie mithilf einer For-Schleife alle Elemente vom Set aus.
Fällt Ihnen etwas auf?
Verwenden Sie in den nachfolgenden Aufgaben möglichst keine For-Schleife.
Der Server Admin SleepyChris
hat vergessen die "AlPro"
zur Menge der verfügbaren Rollen hinzuzufügen.
Retten Sie seien Bot, indem Sie die Rolle noch zur Menge hinzufügen!
Der Bot erhält die gewählten und bereits gegebenen Rollen eines Mitglieds als Sets:
vorhanden_roles = {"everyone", "Mitglied", "AlPro", "LuDS"}
gewaehlt_roles = {"everyone", "Mitglied", "AlPro", "LuDS", "TI"}
Finden Sie durch das Nutzen der Set-Operationen heraus, welche Rollen das Mitglied neu erhalten soll.
Hinweis: Sie benötigen zum Lösen der Aufgabe keine Schleife.
Der Bot erhält nun diese Sets:
vorhanden_roles = {"everyone", "Mitglied", "Ersti", "AlPro"}
gewaehlt_roles = {"everyone", "Mitglied", "AlPro", "LuDS", "TI"}
Finden Sie für den Bot heraus welche Rollen das Mitglied erhalten soll und welche Rollen der Bot dem Mitglied entziehen muss, damit es nur noch die Rollen besitzt, welches vom Mitglied gewählt wurden.
SleepyChris
ist aufgefallen, dass es kein Modul namens SusProg
an dieser Uni gibt.
Helfen Sie ihm dabei das Modul aus der Menge aller verfügbaren Rollen (available_roles_list
) zu entfernen.
Der arme Bot hat Schluckauf und hat daher das Set der gewählten Rollen eines Mitglieds verloren.
Sie erhalten aber die Info, dass das Mitglied alle Rollen gewählt hat und bislang nur über diese Rollen verfügt:
vorhanden_roles = {"everyone", "Mitglied", "Ersti"}
Nutzen Sie Ihr Wissen über alle verfügbaren Rollen, um herauszufinden, welche Rollen ihr Bot noch vergeben soll.
Ein verwirrter Nutzer hat versucht sich die Rolle Oatly
zu holen.
Der Bot ist verwirrt und fragt sich, ob es ein solches Modul gibt.
Helfen Sie dem Bot herauszufinden, ob sich eine Rolle mit diesem Namen in den verfügbaren Rollen befindet.
Geben Sie die Antwort auf dem Terminal aus.
set
ist ein weitere Datentyp von Python. Sets sind “Listen” mit geschweiften Klammern.
Besonders ist, dass in Sets jedes Element nur einmal vorkommt.
Sets unterscheiden sich von Dicts, da sie keine key-value Paare haben, die mit einem :
getrennt sind, sondern einzelne Elemente, wie bei Listen.
Die Ordnung in der Sie neue Elemente in Sets einfügen bleibt nicht erhalten.
Sie können ähnlich wie Sie mit int(8.0)
einen Float zu einem Integer casten auch eine Liste zu einem Set casten.
Auf der Seite: https://docs.python.org/3.10/library/stdtypes.html#set-types-set-frozenset können Sie auch die Funktionen von Sets nachschauen. Zum Beispiel update()
.
Sie können das Keyword in
in einer If-Abfrage nutzen.