Hilfe bei Python Ausgaben, dringend :D

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.
Antworten
tmorad
User
Beiträge: 1
Registriert: Sonntag 14. November 2021, 14:10

Hallo ich muss bis heute Abend einige Aufgaben abgeben. Vieles habe ich schon geschafft aber mit diesen 5 Aufgaben ärgere ich mich schon seit Tagen rum. Einige sollten nach meiner Meinung so schon laufen was sie nicht tun und andere habe ich erst gar nicht verstanden :(

Aufgabe 1c)
Bild
https://ibb.co/QrBc1rN

hier weiß ich ehrlich gesagt nicht wie ich starten und wie ich enden soll.


Aufgabe 2c)

Bild
https://ibb.co/4mDrVJY
hier sollte ich die Funktion aus der Aufgabe b) erweitern, leider meldet Python immer ein Fehler beim ausprobieren (assert unten drunter)


Aufgabe 3a)


Bild
https://ibb.co/F0LJsQ3
Dies ist an sich einer sehr leichte Aufgabe, jedoch bekomme ich immer wieder ein Fehler. Ich habe mal unter der Funktion selber mal "abcd" ausführen lassen als Ergebnis habe ich "a" , "b" , "c", "d" und None rausbekommen, aber warum ??



Aufgabe 3b)

Bild
https://ibb.co/VLszC8m

Leider ein Fragezeichen für mich verstehe kein Wort...


Aufgabe 3c)

Bild
https://ibb.co/h2Xr788

sliceit.... super, tut mir leid hier habe ich leider auch keine Ahnung was ich da machen soll und wie es funktionieren soll.



Ich bedanke mich im vorraus bei jedem einzelnen der mich bei diesen Aufgaben einen Schritt weiter bringen kann. Ich weiß das ich dies alleine hinkriegen sollte, jedoch saß ich jetzt schon einige tage dran und heute Nacht ist die Abgabe. Ich bitte euch nur einen Jungen zu helfen.
Sirius3
User
Beiträge: 18278
Registriert: Sonntag 21. Oktober 2012, 17:20

Für Aufgabe 1c) wäre ein erster Schritt, eine Funktion zu schreiben, die die erforderliche Liste liefert und dann so zu erweitern, dass diese Liste auch im Cache gespeichert wird und dann so zu erweitern, dass gesucht wird, ob für die Parameter für diese Liste schon eine Liste im Cache ist.

Aufgabe 2b) ist falsch gelöst. Eine for-Schleife über einen Index macht man nicht und and funktioniert nicht so, wie Du denkst. `type` verwendet man eigentlich überhaupt nicht so, aber die Beschreibung erwartet das. Du mußt also etwas lernen, was falsch ist. Kannst Du nichts dafür, solltest Du aber wissen.
Aufgabe 2c) ist dann ein absolutes "NICHT MACHEN". Es soll wohl nur zeigen, wie kompliziert es ist, sowas sauber zu lösen. Zu Deiner Lösung ist wieder das and falsch, und die Bedingung in zwei if aufzuspalten ist falsch, da nur die innere Bedingung umgedreht hast, und dazu auch noch falsch, sowohl dass das Gegenteil von >= nicht <= ist und auch dass die Negierung von (a and b) nicht (not a and not b) ist.
Hier mußt Du also erst einmal die gesamte Bedingung richtig negieren und dann aufpassen, dass wenn Du das erste Element einer Liste löschst, der Index aller weiterer Listenelemente um eins nach vorne rückt.

Aufgabe 3a) return beendet sofort die Funktion und append liefert immer None als Ergebnis. Wie man mit Listen arbeitet, hast Du in anderen Funktionen doch schon gezeigt.

Aufgabe 3b) überlege mal, über welche Typen man mit einer for-Schleife gehen kann? Aufgabe 3a wandelt ein Iterable in eine Liste um, nun mußt Du das selbe für zwei Iterables machen.

Aufgabe 3c) enthält doch schon alle Hinweise, die man geben kann, ohne die Lösung zu verraten. Du sollst einfach eine neue Liste zurückgeben, die nur Elemente an bestimmten Positionen enthält.
Benutzeravatar
__blackjack__
User
Beiträge: 14077
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Text als Bilder ist doof. Hier ist ein bisschen Text als Text:

c) Caching (4 Punkte)

In dieser Aufgabe sollen Sie eine Funktion implementieren, die einen Cache benutzt. Caching ist ein Vefahren, bei dem man bereits berechnete Ergebnisse wiedervenvendet anstatt sie immer wieder auts Neue zu berechnen.
Schreiben Sie eine Funktion calc_range, die zwei Argumente lower und higher vom Typ int erwartet. Die Funktion soll eine list mit den Einträgen lower, lower + 1, …, higher - 2, higher - 1 zurückgeben. Beispiel: Für lower=2 und higher=5 wäre das Ergebnis [2, 3, 4].

Wenn calc_range zweimal mit den gleichen Argumenten aufgerufen wird, soll beide Male das selbe Listenobjekt zurückgegeben werden, d.h. beim zweiten Mal wird dieses nicht mehr neu erzeugt, sondern wiederverwendet. Verwenden sie dazu das Dict cache aus der folgenden Zelle, um sich Rückgabewerte zu bestimmten Funktionsparametern für erneute Aufrufe zu merken.

Code: Alles auswählen

cache = dict()

def calc_range(lower: int, higher: int):
    ...

# Diese Zelle nicht verändern!
cache = dict()
res_1 = calc_range(3, 5)
res_2 = calc_range(3, 5)
assert(res_1 == []
assert(res_1 is res_2)
Schreiben Sie eine Funktion filter_list, die ein Argument elements vom Typ list erwartet. filter_list erstellt eine neue Liste, die nur die Elemente vom Typ int oder float enthält, und die größergleich 1 und kleiner als 50 sind. Sie müssen eine For-schleife verwenden, um diese Aufgabe zu
lösen.

Code: Alles auswählen

def filter_list(elements):
    newlist=[] # die Funktion erstellt eine neue Liste
    for i in range(len(elements)): # die for-schLeife Läuft so lange wie die Liste vom Eingabewert lang ist
        if type(elements[i]) == int and float: # wenn ein Element in der Liste ein Integer oder Float ist
          if elements[i] >= 1 and elements[i] <50: # und wenn das Ausgewählte Element größer 1 und kleiner 50 ist
              newlist.append(elements[i]) # dann wird das Element aus der Liste der Eingabeliste in die neue Liste hinzugefügt
        return newlist # die neue Liste wird zurückgegeben

# Diese zelle nicht verändern!
assert filter_list([0,10,55]) == [10]
assert filter_list([10,"100",10]) == [10,10]
# Die Eingabeliste darf sich nicht ändern
x = [20, 30, 60]
filter_list(x)
assert x == [20, 30, 60]
c) Die Tücken des Iterierens (2 Punkte)

Schreiben Sie eine Funktion filter_1ist2, die genauso funktioniert, wie die Funktion aus Teilaufgabe b). Allerdings soll diesmal nicht eine neue Liste erstellt werden, sondern die bestehende Liste geändert werden. Die Funktion darf kein Ergebnis per return zurückgeben.

Code: Alles auswählen

def filter_1ist2(elements):
    for i in range(len(elements)):
        if type(elements[i]) == int and float:
          if elements[i] >= 1 and elements[i] <50:
              elements.remove(i)
a) Konvertierung von String zu Liste (2 Punkte)

Schreiben Sie eine Funktion str2list, die einen str als Argument erwartet. Die Funktion soll den String in einzelne Zeichen zerlegen und eine Liste mit all diesen Zeichen zurückgeben.

Beispiel: Für die Eingaben "Liste" ist die korrekte Ausgabe ["L", "i", "s", "t", "e"].

Code: Alles auswählen

def str2list(str_arg):
    li=[]
    for x in str_arg:
        return li.append(x)

# Diese zelle nicht verändern!
assert str2list("abcd") == ["a", "b", "c", "d"]
b) Konkatenation von Iterables (3 Punkte)

Schreiben Sie eine Funktion combine, die zwei Argumente left und right erwartet. left und right können irgendeinen der Typen str, tupel oder list haben. Left und right müssen nicht notwendigerweise den gleichen Typ haben.

Geben Sie eine list zurück. welche die Elemente von left gefolgt von den Elementen aus right enthält.

Beispiel: Für die Eingaben (1, 2, 3) und "abc" ist die korrekte Ausgabe [1, 2, 3, "a", "b", "c"].

c) Slicing (3 Punkte)
Schreiben Sie eine Funktion sliceit, die ein Argument arg vom Typ list oder tuple sowie zwei weitere Argumente lower und upper vom Typ int erwartet. Die Funktion soll eine neue Liste zurückgeben, die alle Elemente arg enthält für die lower ≤ i < upper gilt.

Beachten Sie: Die Elemente einer Liste oder eines Toples werden ab 0 nummeriert. Beispielsweise ist für l=["a", "b", "c"] der Ausdruck l[0] das erste Element, also "a".

Beispiel: Der Aufruf von sliceit(["a", "b", "c"], 0, 1) gibt ["a"] zurück.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten