Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Mahlzeit zusammen,
meine Aufgabe ist es hier eine Funktion zu schreiben, welche eine Liste und mehrere Zahlen (beliebig und unbekannt) als Keyword Parameter übergeben bekommt. Diese soll True zurückgeben, wenn jedes Keyword mindestens in der übergebenen Anzahl in der Liste enthalten ist.
Das ist mein Ansatz dafür, ich bin für jede Hilfe dankbar!
@Freitag: was fängt man mit der Meldung »kwarg« ist nicht definiert an? Vielleicht, dass »kwarg« nicht definiert ist, also nie einen Wert erhalten hat. Ein else-Zweig, der nur `pass` enthält, kann man auch gleich ganz weglassen. Eine Zahl mit einer Liste zu vergleichen, wird nicht funktionieren und Deine `return`s solltest Du Dir auch nochmal anschauen.
Ich weiß nicht wie ich das korrigieren soll. Wir sollen die Aufgabe hochladen und dann wird das mit asserts kontrolliert. ich hatte gedacht kwargs ist dann definiert, wenn die Kontrolle, Beispielwerte drüber laufen lässt aber dem ist anscheinend nicht so. Die else Zeile habe ich entfernt...
Freitag hat geschrieben:Mahlzeit zusammen,
meine Aufgabe ist es hier eine Funktion zu schreiben, welche eine Liste und mehrere Zahlen (beliebig und unbekannt) als Keyword Parameter übergeben bekommt.
Keyword-Parameter bestehen aus einem Schlüssel und einem Wert. Die Zahlen sind die Werte (da Schlüssel keine Zahlen sein können) -- aber was sind die Schlüssel? Irgendetwas Beliebiges? Kannst du einen Beispielaufruf der Funktion zeigen?
snafu hat geschrieben:Schlüssel können Zahlen sein. Alles was hashbar ist, kann ein Schlüssel sein. Wichtig ist, dass der Hashwert sich nicht verändert.
Ja, für Dictionaries hast du recht. Für Keyword-Parameter, um die es ja ging, gilt das aber meines Wissens nicht:
In [1]: def func(**kwargs):
...: print(kwargs)
...:
In [2]: func(a=1)
{'a': 1}
In [3]: func(1=1)
File "<ipython-input-3-b103a6d28baf>", line 1
func(1=1)
Vielleicht hätte ich nicht den Begriff "Schlüssel" verwenden sollen; ich habe sie so genannt, weil sie ja innerhalb der Funktion als Schlüssel eines Dictionarys verfügbar gemacht werden.
Das stimmt. Für Funktionsaufrufe müssen Strings als Schlüssel verwendet werden. Python wandelt für func(foo=True) automatisch das foo in einen String um. Wobei es das bei numerischen Schlüsseln nicht tut. Es meckert dann mit einem SyntaxError, weil es 1='foo' für einen Ausdruck hält. IMHO ist das ein Bug oder zumindest sonderbares Verhalten. Gern höre ich mir eine sinnvolle Begründung dafür an...
Okay. Leuchtet mir jetzt ein, dass hier die selben Regeln gelten wie für alle anderen Bezeichner. Denn die sind im Kontext des für den Namensraum verwendeten dicts ja letztlich auch Strings, die als Schlüssel zum Einsatz kommen.