Seite 1 von 1

Formel ohne Schleife

Verfasst: Sonntag 7. Juni 2020, 17:10
von Theresa
Hallo liebe Mitglieder!

Ich habe mir meine Python Skills zum größten Teil selber beigebracht, weil ich in meinem Statistik-Studium leider zu wenig damit zu tun habe.
Dieses Semester mache ich aber einen Einführungskurs in Python, allerdings ist dieser wegen der Uni-Schließungen sehr schlecht gestaltet und es gibt keine Möglichkeiten, Fragen zu stellen. Jetzt stehe ich seit mehreren Tagen vor einer für mich unlösbaren Aufgabe:

Ich soll die Formel 4^a * (8b+7) für a und b jeweils von 0 bis 9 programmieren.
Mit Schleife konnte ich das leicht lösen, aber im zweiten Teil sollte ich die Formel OHNE Schleife programmieren und das schaffe ich einfach nicht...

Könntet ihr mir bei der Lösung helfen?

LG Theresa

Re: Formel ohne Schleife

Verfasst: Sonntag 7. Juni 2020, 18:36
von __deets__
Hat der Dozent sich da etwas weiter zu ausgelassen wie das umgesetzt werden soll? Ich kann mir eine rekursive Lösung vorstellen, auch wenn das etwas knödelig ist. Oder eine verschachtelte List-Comprehension, das ist aber eigentlich auch nur eine Schleife unter der Haube.

Re: Formel ohne Schleife

Verfasst: Sonntag 7. Juni 2020, 19:30
von __blackjack__
Oder vielleicht ist auch Numpy beteiligt. Unterm Strich: Wir brauchen mehr Informationen zu den Randbedingungen um sinnvoll helfen zu können.

Re: Formel ohne Schleife

Verfasst: Sonntag 7. Juni 2020, 20:07
von nezzcarth
Mit R kann man das zu Beispiel so lösen:

Code: Alles auswählen

> f <- function(x) x**2
> sapply(1:9, f)
[1]  1  4  9 16 25 36 49 64 81
Ich kann mir gerade auch wegen des Statistik-Kontexts gut vorstellen, dass etwas in der Richtung das Vorbild ist und dager 'map' verwendet werden soll; das kommt einem direkten Python-Gegenstück von 'sapply' wohl am nächsten. Allerdings werden die schon vorgeschlagenen List Comprehensions oft als pythonischer angesehen.

Re: Formel ohne Schleife

Verfasst: Sonntag 7. Juni 2020, 21:24
von snafu
Ich hätte jetzt auch spontan an map() gedacht. Also eine Funktion basteln, die a und b als Argumente nimmt und das Ergebnis der Formel liefert. Diese Funktion dann mit map() auf einem entsprechenden range()-Aufruf anwenden. Noch mehr verrate ich aber nicht...