Funktionen mit return HILFE!!!!

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.
Bebo123
User
Beiträge: 13
Registriert: Sonntag 15. April 2018, 21:07

__deets__ hat geschrieben:Was ich meine ist, das dir hier niemand die absoluten Grundlagen beibiegen wird, die du offensichtlich hoppalahopp verpennt hast. Setz dich hin & arbeite ein oder zwei oder 10 Tutorials durch. Ich tauch auch nicht für dein Seepferdchen. Das musst schon du selbst machen.

Wenn du Code zeigst der erkennen lasset, dass du dich damit ernsthaft beschäftigtigst, oder konkrete Fehler hast, die du nicht verstehst, kann man dir helfen. Einfach mal alles als Privatlehrer vorkauen ist nicht.
diese hausaufgabe besteht aus zwei teilen, einen teil hab ich eh bereits erledigt! und dies ohne "Privatlehrer", der mir es vorkaut! Ich kann gerne den ersten funktionieren teil posten!! :)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Schleifen solltet ihr gelernt haben, oder? Sonst hat die Aufgabenstellung ja keinen Sinn[1]. Schau im Zweifelsfall noch mal im Tutorial unter "for Statements". Den Code um auf den ersten und letzten Buchstaben eines Strings zuzugreifen habe ich dir hier in diesem Thread auch schon gezeigt. Vergleiche macht man mit ==.

Deine Aufgabe:
1. neue Liste erstellen
2. jedes Element der als Parameter übergebenen Liste verarbeiten
3. je Element prüfen ob Bedingung erfüllt wird, wenn ja, dann an neue Liste anhängen
4. neue Liste aus der Funktion zurückgeben

[1] Anmerkung: In diesem Kontext. Natürlich könnte man auch mit map und filter etwas basteln.
Sirius3
User
Beiträge: 17747
Registriert: Sonntag 21. Oktober 2012, 17:20

@/me: da Strings reingehen, und String rausgehen ist `map` nicht notwendig.
Bei funktionaler Programmierung ist man dann sowieso schon über das definieren von Funktionen hinaus:

Code: Alles auswählen

filtere_namen_mit_anfangs_und_endbuchstaben_gleich = partial(filter, re.compile('^(.).*\\1$').match)
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

Ich würde eine Lösung in Prolog vorschlagen (ist sowieso viel schöner als reguläre Ausdrücke :mrgreen:):
[codebox=prolog file=Unbenannt.txt]
first_letter_equals_last_letter(Name) :-
string_codes(Name, [C | Cs]),
append(_, [C], [C | Cs]).

search_begin_end(Names, MatchingNames) :-
include(first_letter_equals_last_letter, Names, MatchingNames).

main :-
Names = ["BABS", "DORIS", "LEA", "ALEXA", "ELENE"],
search_begin_end(Names, MatchingNames),
writeq(MatchingNames), nl.
[/code]
Ausführen mit
[codebox=text file=Unbenannt.txt]
» swipl -g main -t halt main.pl
["ALEXA","ELENE"]
[/code]
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

@narpfel: in Python finde ich es aber schöner (und entspricht vermutlich dem, was /me ohne map und filter im Sinn gehabt haben mag):

Code: Alles auswählen

(p for p in q if p[0] == p[-1])
narpfel
User
Beiträge: 645
Registriert: Freitag 20. Oktober 2017, 16:10

@kbr: Wenn schon golfen, dann richtig (in Pyth):
[codebox=text file=Unbenannt.txt]
fqhTeTQ
[/code]

[codebox=text file=Unbenannt.txt]
» echo '["BABS", "DORIS", "LEA", "ALEXA", "ELENE"]' | python -m pyth -c 'fqhTeTQ'
['ALEXA', 'ELENE']
[/code]
Antworten