Seite 1 von 1

bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 16:42
von geli56
Hallo Liebe Python-Experten!

ich habe im moment einen kurs auf der uni, in dem wir mit python programmieren.
das heißt ich bin relativ neu auf diesem gebiet und wollte euch fragen ob ihr mir bei zwei aufgaben
helfen könntet! hab schon alles mögliche probiert nur komm ich einfach nicht dahinter.
ich bin euch soo dankbar wenn ihr mir helfen könntet ;)
die aufgabe1 lautet folgendermaßen:

Erstellen sie eine Funktion ausgabe die einen Parameter erhält und keinen Rückgabewert liefert.
Parameter: liste die Liste die in der Funktion ausgegeben werden soll.
Die Funktion ausgabe soll einen Teil der Listen ausgeben. Es soll nicht jedes Element ausgegeben werden, sondern jedes 4. Element.
Überprüfen sie die Funktionsfähigkeit mit der gegebenen Liste.
Hinweis:
Denken sie daran die Indizierung der Listen ist 0 basiert.
Verwenden sie den Modulo Operator und Range.
folgende Liste ist gegeben: frequenz = [100, 110, 115, 125, 140, 130, 135, 145, 155, 160, 152, 158, 172, 180, 156, 196, 151]


ich weiß zwar dass man mit "range" eine schrittweite angeben kann aber nicht wie ich auf die liste dann zugreifen kann....


hier ist auch noch eine 2. aufgabe die relativ ähnlich ist und ich daher absolut nicht weiter komme:

Erstellen sie eine Funktion ausgabe_2 die einen Parameter erhält und keinen Rückgabewert liefert.
Parameter: liste die Liste die in der Funktion ausgegeben werden soll.
Die Funktion ausgabe_2 soll jedes Listenelement abwechselnd um einen gewissen Betrag erhöht bzw. erniedrigt ausgeben. Die Höhe der Veränderung ist im ersten Block oben ersichtlich.
Beispiel: Falls der Wert 3 ist soll folgendes ausgegeben werden: 103, 107, 118, 122, 143, 127, ...
Überprüfen sie die Funktionsfähigkeit durch den Aufruf der Funktion mit verschiedenen Parametern.
Hinweis: Der Inhalt der Liste soll (und muss) nicht verändert werden.



VIELEN VIELEN DANK SCHON MAL!!!!

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 18:43
von BlackJack

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 18:54
von /me
geli56 hat geschrieben:ich weiß zwar dass man mit "range" eine schrittweite angeben kann aber nicht wie ich auf die liste dann zugreifen kann....
Welche Probleme hast du konkret mit der Dokumentation von range und wie weit kann das Tutorial zum Thema range die Probleme nicht lösen?

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 19:50
von geli56
@BlackJack:
mir ist schon klar dass es nicht darum gehen soll meine hausübungen zu lösen,
es geht eher darum mir bei einem problem zu helfen, bei dem ich mich nicht hinaussehe trotz
allen möglichen tutorials etc.! wie gesagt ich bin kein programmier genie und bin etwas am verzweifeln
da die klausur auch positiv verlaufen sollte aber naja...
hatte halt gedacht es wäre jemand so nett im forum und würde mir helfen!

@/me:
danke für deine links, leider hab ich keine lösung damit gefunden :(
naja wenn ich eine liste hätte von z.B. range(11) also mit zahlen von 0-10,
dann wüsste ich dass ich einfach: print range(0,11,4)
eintippen brauche um die zahlen 0, 4 und 8 zu erhalten. da
es sich aber bei diesem beispiel um eine liste mit irgendwelchen zahlen handelt, weiß ich nicht so
recht wie man die funktion aufstellt; zumindest glaub ich dass ich eine for schleife benötige...
aber mich verwirrt die angabe mit dem modulo operator. der gibt doch nur den restwert bei einer division an!?

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 19:58
von Sirius3
@geli56: Du einfachste und schönste Lösung darfst Du nicht verwenden und auch Deine range-Lösung mit einer Schrittweite ist ja laut Aufgabenstellung nicht gewollt, sondern Du sollst über den Modula-Operatoren alle durch 4 teilbare Zahlen ermitteln. for-Schleifen sind auf jeden Fall schonmal ein guter Ansatz.

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 20:14
von geli56
ja genau dass die lösung nicht so einfach ist war mir schon klar ;)
naja ich soll nicht jede zahl die durch 4 teilbar ist ermitteln sonder jedes 4. element der liste.
bin aber jetzt glaub ich darauf gekommen dass ich in die for schleife integrieren muss dass alle
indizes die sich durch vier teilen lassen angezeigt werden müssten...
hänge aber jetzt noch in der umsetzung ;)

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 20:27
von BlackJack
@geli56: Lass Dir doch mal den Rest vom Teilen durch 4 von jeder Zahl von 1 bis sagen wir mal 20 ausgeben. Dann sollte Dir ein Muster auffallen.

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 20:39
von geli56
dank für den tipp blackjack aber leider
trifft das muster nicht auf meine frequenz liste zu :(

bin mal bis hier hergekommen aber bin mir ganz unsicher ob ich überhaupt am richtigen weg bin:

def ausgabe(liste):
for element in liste:
if liste.index(element)%4==0:
print element

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Dienstag 23. Juni 2015, 21:48
von cofi
Nein, die `index` Methode hilft dir nicht. Mit folgender Liste siehst du mehr als die zwei gewuenschten 4er ausgegeben: [0, 1, 2, 3, 4, 4, 4, 4, 4, 4]

Es gibt eine `enumerate` Funktion: https://docs.python.org/3/library/funct ... #enumerate

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Mittwoch 24. Juni 2015, 07:08
von Sirius3
... dann kommen irgendwelche seltsamen Programme raus, weil der Aufgabensteller in einer unpassenden Situation den Modulo-Operator anwenden will, statt einfach "liste[::4]" zuzulassen. Wahrscheinlich kennt er bei Aufgabe zwei weder zip noch cycle.

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Mittwoch 24. Juni 2015, 16:58
von bwbg
Da, ich keine Informatik- oder vergleichbare Ausbildung erhalten habe, kann ich nur mutmaßen, dass der Aufgabensteller versucht, die Lösungen so herbeizuführen, dass diese relativ einfach auch in andere (imperative) Programmiersprachen zu übertragen sind. Slices, zip und itertools.cycle sind schon sehr python-spezifisch. Und wenn ich dann an die Zeit zurück denke, zu der mir LCs noch kryptisch vorkamen ... ;)

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Mittwoch 24. Juni 2015, 21:42
von BlackJack
@bwbg: Man könnte es auch anders herum vermuten: Die Kenntnisse sollen nicht einfach auf nicht so ausdrucksstarke Sprachen übertragen werden können, sondern viele Dozenten und Lehrer haben die Aufgaben mit solchen Sprachen entwickelt oder auch schon so übernommen, und übertragen die jetzt 1:1 auf Python. :-)

Re: bestimmte Elemente einer Liste anzeigen

Verfasst: Donnerstag 25. Juni 2015, 12:50
von bwbg
Vielleicht sollte man eine "ideale" Python-Lösung für die Aufgabenstellung vorgeben. Zu 1 ist dies ja bereits geschehen (Sirius3). Zu 2 wäre dies auch nicht mehr, als eine Zeile in eine Funktion gepresst:

Code: Alles auswählen

[x + y for x, y in zip(frequenz, itertools.cycle([z, -z]))]
Die Aufgabe bestünde nun darin, zu erklären, was genau diese Zeile bewirkt - hiernach wäre man eine ganze Ecke weiter und wesentlich besser gerüstet für eine Prüfung. Meiner Meinung nach sollte man die listenverarbeitenden Sprachmittel (LC, ggf.: DC) und Funktionen (map, filter, itertools, ggf. all, any, ggf. ggf. reduce) auf jeden Fall behandeln. Listen sind nunmal ein elementarer Sprachbestandteil von Python.