Hallo, ein Neuling steckt in Schwierigkeiten :)

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

webspider hat geschrieben:Was bewirkt die dreifache Zuweisung in ``sex = sexes = sex if sex in allowed_sexes else None``?

BlackJack "überschreibt" damit `sex`, damit er die Vorkommen im `defaultdict` korrekt hochzählen kann. Man will da ja wissen, wieviele "Fehler" aufgetreten sind, daher muss man sich da auf den Wert `None` beziehen und nicht auf `s` oder was da sonst noch stehen könnte.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Ups, hier 1 b) mit korrektem Rückgabetyp. :oops:

Code: Alles auswählen

# 
# 1 b)
# 
def get_unique_characters(string):
    """
    >>> get_unique_characters('')
    []
    >>> get_unique_characters('baabcad')
    ['a', 'b', 'c', 'd']
    >>> get_unique_characters('mississippi')
    ['i', 'm', 'p', 's']
    >>> get_unique_characters('python')
    ['h', 'n', 'o', 'p', 't', 'y']
    """
    return sorted(set(string))
@webspider: Das ist nur eine zweifache Zuweisung. Da wird entweder der Wert von `sex` oder `None` an `sex` und `sexes` gebunden, je nach dem ob es ein erlaubter Wert ist oder nicht. Das da `sexes` mit drin steht hat den Grund in der IMHO komischen Aufgabenstellung dass die Funktion eine Änderung der Liste als Seiteneffekt haben soll.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ja, da sind einige Sachen eher "unpythonisch" und allgemein sonderbar. Ich denke wir sind uns auch einig, dass da vieles eben nicht mit Bordmitteln gelöst werden soll - Aufgabe 1 ist mit unserer Lösung ja eher, nunja, "trivial". Ich vermute doch mal stark, dass hier eher C-like Schleifen a la "problembär" benutzt werden sollten. Aber vielleicht irre ich mich auch :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@Hyperion: Aufgabe 1 b) scheint mir gar keine ernsthafte Programmieraufgabe zu sein, sondern einfach nur geschenkte Punkte für Leute, die den gegebenen Quelltext von 1 a) verstanden haben und sich noch erinnern wie man Funktionen definiert. ;-)
hoola
User
Beiträge: 18
Registriert: Samstag 7. Juli 2012, 08:44

Code: Alles auswählen

ISBN = {
    '9783768825825':['Delius Klasing','MV - Bornholm', Date(2009, 1, 1), 54.90, 2],
    '9783768832021':['Delius Klasing','MV - Bornholm', Date(2011, 1, 1), 54.90, 13],
    '9783892255598':['Edition Maritim','Rund Rügen', Date(2008, 3, 1), 29.90, 15],
    '9783892252368':['Delius Klasing','Küstenhandbuch MV', Date(2006, 3, 1), 29.90, 3],
    '9783980672016':['Quick Maritim Medien','Törnplaner/-atlas Peene, Oder, Bodden', Date(2006, 4, 1), 25.00, 5],
    '9783768831017':['Delius Klasing','Kieler Bucht und Rund Fünen (2010)', Date(2010, 3, 1), 69.90, 17]
    }

def inventur(dictionary):
    summe = 0
    for key in dictionary.keys():
        summe += dictionary[key][3]*dictionary[key][4]
    return summe

print(inventur(ISBN))
Aufgabe 4 b) geschafft .. Dictionarys scheinen relativ einfach sein.
Geht die Lösung so?
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

Oder einfacher:

Code: Alles auswählen

def aggregated_value_of_inventory(stock):
    return sum(value[3] * value[4] for value in stock.values())
In specifications, Murphy's Law supersedes Ohm's.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

An dieser Stelle brauchst du doch nur die Values, dann nimm doch besser gleich ``values()`` oder in Python 2.x ``itervalues()`` statt ``keys``

Code: Alles auswählen

for key in dictionary.keys():
Und wenn man das weiter optimiert kommt man bei pillmunchers Lösung raus.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
hoola
User
Beiträge: 18
Registriert: Samstag 7. Juli 2012, 08:44

Ahoi,
wollte mich nur nochmal zurückmelden und euch für eure Hilfe bedanken.
Hab ne 2,0 in der Prüfung bekommen, es hat also was gebracht! :)

Gehabt euch wohl!

Peace
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

hoola hat geschrieben: Hab ne 2,0 in der Prüfung bekommen, es hat also was gebracht! :)
Na dann: Glückwunsch!

Konntest Du denn `enumerate` anbringen? :-D
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten