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

hallo,

kann mir wer bei dieser aufgabe helfen?

#schreibt eine Funktion sucheAnfangEnde mit einer Namensliste als Parameter.
#Diese Methode soll eine Liste zurückgeben mit sämtlichen Namen, deren Anfangsbuchstabe derselbe ist wie der Endbuchstabe.

lg :)
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bebo123: was hast Du denn schon versucht? Wo konkret hat Du ein Problem?
Bebo123
User
Beiträge: 13
Registriert: Sonntag 15. April 2018, 21:07

Sirius3 hat geschrieben:@Bebo123: was hast Du denn schon versucht? Wo konkret hat Du ein Problem?
ich verstehe irgendwie nicht so ganz wie ich den ersten und den letzen buchstaben mit den Elementen aus der liste vergleichen kann. könntest du mir vielleicht bei dieser aufgabe helfen? ;)
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Bebo123 hat geschrieben:kann mir wer bei dieser aufgabe helfen?
Natürlich. Das lässt sich als Einzeiler schreiben.

Es klingt allerdings so, als sei das eine Hausaufgabe, so dass dir vermutlich manche Sprachkonstrukte noch gar nicht bekannt sind. Welchen Code hast du denn schon? Zumindest das def-Statement mit der Funktionsdefinition sollte ja ohne jegliche Probleme möglich sein. Wenn nicht ... uiiii ... dann solltest du noch mal in ein geeignetes Tutorial schauen.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@Bebo123: Du sollst ja auch jedes Element der Liste für sich testen, also ob ein String mit dem selben Namen beginnt wie endet. Wie ermittelt man den ersten und letzten Buchstaben eines Strings?
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Bebo123 hat geschrieben:ich verstehe irgendwie nicht so ganz wie ich den ersten und den letzen buchstaben mit den Elementen aus der liste vergleichen kann.
Entweder hast du die Aufgabe nicht wirklich verstanden oder du gibst sie gerade extrem schräg wieder. Präzision ist wichtig beim Schreiben von Software. Es geht darum, jedes Element der Liste (vermutlich ein String) daraufhin zu überprüfen, ob das erste und letzte Zeichen des Elements identisch sind.

Mal so als Denkanstoß:

Code: Alles auswählen

>>> name = "Monty"
>>> name[0]
'M'
>>> name[-1]
'y'
Bebo123
User
Beiträge: 13
Registriert: Sonntag 15. April 2018, 21:07

/me hat geschrieben:
Bebo123 hat geschrieben:kann mir wer bei dieser aufgabe helfen?
Natürlich. Das lässt sich als Einzeiler schreiben.

Es klingt allerdings so, als sei das eine Hausaufgabe, so dass dir vermutlich manche Sprachkonstrukte noch gar nicht bekannt sind. Welchen Code hast du denn schon? Zumindest das def-Statement mit der Funktionsdefinition sollte ja ohne jegliche Probleme möglich sein. Wenn nicht ... uiiii ... dann solltest du noch mal in ein geeignetes Tutorial schauen.
Namenliste=["BABS","DORIS","LEA","ALEXA","ELENE"]
def sucheAnfangEnde(Namenliste):

das hab ich bis jetzt!
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Wie würdest du denn von Hand (bzw. im Kopf) bei der Aufgabe weiter vorgehen?
Bebo123
User
Beiträge: 13
Registriert: Sonntag 15. April 2018, 21:07

/me hat geschrieben:Wie würdest du denn von Hand (bzw. im Kopf) bei der Aufgabe weiter vorgehen?
naja, ich denke ich müsste mir jetzt das erste element/namen aus der liste herausnehmen und dann den ersten und letzten Buchstaben überprüfen ob sie identisch sind
Bebo123
User
Beiträge: 13
Registriert: Sonntag 15. April 2018, 21:07

Bebo123 hat geschrieben:
/me hat geschrieben:Wie würdest du denn von Hand (bzw. im Kopf) bei der Aufgabe weiter vorgehen?
naja, ich denke ich müsste mir jetzt das erste element/namen aus der liste herausnehmen und dann den ersten und letzten Buchstaben überprüfen ob sie identisch sind
Aber wie setze ich das jetzt um? HIIILFE!!!!
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du im Python Tutorial schon mal die Kapitel über Strings gelesen? https://docs.python.org/3/tutorial/intr ... ml#strings

Da steht sprichwörtlich wie man auf den ersten und letzten Buchstaben zugreift.
Bebo123
User
Beiträge: 13
Registriert: Sonntag 15. April 2018, 21:07

__deets__ hat geschrieben:Hast du im Python Tutorial schon mal die Kapitel über Strings gelesen? https://docs.python.org/3/tutorial/intr ... ml#strings

Da steht sprichwörtlich wie man auf den ersten und letzten Buchstaben zugreift.
mhh okay danke, aber wie mache ich denn dann weiter?
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

Damit in deiner Funktion über die Elemente deiner Liste zu iterieren. Das habt ihr bestimmt auch schon gelernt..
Bebo123
User
Beiträge: 13
Registriert: Sonntag 15. April 2018, 21:07

__deets__ hat geschrieben:Damit in deiner Funktion über die Elemente deiner Liste zu iterieren. Das habt ihr bestimmt auch schon gelernt..
ups, da hab ich wohl was in der schule verschlafen... wie meinst du das? :D
__deets__
User
Beiträge: 14539
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
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: 17749
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])
Antworten