@BlackJack: Dafür ist Deine Rückgabe bei Aufgabe 1 nicht korrekt
Hallo, ein Neuling steckt in Schwierigkeiten :)
- Hyperion
 - Moderator
 - Beiträge: 7478
 - Registriert: Freitag 4. August 2006, 14:56
 - Wohnort: Hamburg
 - Kontaktdaten:
 
Oops, ich hatte da wohl die letzte Aufgabe nicht korrekt gelesen. Hier die korrigierte Version. BlackJacks Ansatz mit der Datenstruktur ist aber wesentlich besser und auch beim Parsen müsste ich mir mehr "Mühe" geben.
@BlackJack: Dafür ist Deine Rückgabe bei Aufgabe 1 nicht korrekt
            
			
									
						
							@BlackJack: Dafür ist Deine Rückgabe bei Aufgabe 1 nicht korrekt
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
			
						assert encoding_kapiert
Mal zu aufgabe 4 a).
Ich bin gerade dabei mir die Grundsätze des Dictionarys anzueignen .. scheint ja nicht all zu schwer zu sein.
Allerdings verstehe ich bei BlackJacks Lösung folgendes nicht ganz: "Date(2009, 1, 1)".
Ist "Date()" jetzt ein Tupel oder eine extra Funktion von Python oder was?
Verstehe grad den Grund nicht wirklich, warum der Stand in dieser Form dargestellt werden muss.
Kann man den Stand so besser ändern, wenn es mal eine "neue Version" einer Karte geben sollte?
Ich dachte Tupel sind immutabel, oder ist das gar kein Tupel?
Könnt ihr mir auf die Sprünge helfen?
            
			
									
						
										
						Ich bin gerade dabei mir die Grundsätze des Dictionarys anzueignen .. scheint ja nicht all zu schwer zu sein.
Allerdings verstehe ich bei BlackJacks Lösung folgendes nicht ganz: "Date(2009, 1, 1)".
Ist "Date()" jetzt ein Tupel oder eine extra Funktion von Python oder was?
Verstehe grad den Grund nicht wirklich, warum der Stand in dieser Form dargestellt werden muss.
Kann man den Stand so besser ändern, wenn es mal eine "neue Version" einer Karte geben sollte?
Ich dachte Tupel sind immutabel, oder ist das gar kein Tupel?
Könnt ihr mir auf die Sprünge helfen?
- Hyperion
 - Moderator
 - Beiträge: 7478
 - Registriert: Freitag 4. August 2006, 14:56
 - Wohnort: Hamburg
 - Kontaktdaten:
 
Da hilft ein Blick ganz nach oben in BJs Lösung:hoola hat geschrieben: Ist "Date()" jetzt ein Tupel oder eine extra Funktion von Python oder was?
Code: Alles auswählen
from datetime import date as Date
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
			
						assert encoding_kapiert
Super vielen Dank.Hyperion hat geschrieben:Da hilft ein Blick ganz nach oben in BJs Lösung:hoola hat geschrieben: Ist "Date()" jetzt ein Tupel oder eine extra Funktion von Python oder was?Das ist ein spezieller Datentyp für ein Datum in Python. Kannst das in der Doku im `datetime`-Modul mal nachlesen.Code: Alles auswählen
from datetime import date as Date
- 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
			
						assert encoding_kapiert
- 
				BlackJack
 
@Hyperion: Ups, hier 1 b) mit korrektem Rückgabetyp. 
@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.
            
			
									
						
										
						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))- 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
			
						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.  
            
			
									
						
										
						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))Geht die Lösung so?
- pillmuncher
 - User
 - Beiträge: 1532
 - 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``
Und wenn man das weiter optimiert kommt man bei pillmunchers Lösung raus.
            
			
									
						
							Code: Alles auswählen
for key in dictionary.keys():My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
			
						- Hyperion
 - Moderator
 - Beiträge: 7478
 - Registriert: Freitag 4. August 2006, 14:56
 - Wohnort: Hamburg
 - Kontaktdaten:
 
Na dann: Glückwunsch!hoola hat geschrieben: Hab ne 2,0 in der Prüfung bekommen, es hat also was gebracht!![]()
Konntest Du denn `enumerate` anbringen?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
			
						assert encoding_kapiert
