Moin zusammen, ich bin neu hier, und mache gerade einen Python für KI Lehrgang. Bei einen Test wurde folgende Aufgabe gestellt:
Greife auf das erste Zeichen des zweiten Wortes zu und ändere es in Großbuchstaben (licht -> Licht).
satz = "Das licht des Mondes beleuchtet DIE Nacht."
Danke im voraus
Kudde
Greife auf das erste Zeichen des zweiten Wortes zu und ändere es in Großbuchstaben (licht -> Licht).
die Aufgabe ist ein Oneliner, wenn man weiß, was man tut. Was hast du denn für ein Problem mit der Aufgabe? Das Forum hier ist Hilfe zur Selbsthilfe, daher sage ich dir den Oneliner nicht, sondern will erst sehen, was du hast.
Falls du einen Einstieg suchst, könntest du das hier lesen: https://docs.python.org/3/library/stri ... .capwords , Es sind nicht die Droiden, die du suchst, aber vielleicht hilft die Beschreibung dabei, zu überlegen, was du machen willst bzw. musst.
Falls du einen Einstieg suchst, könntest du das hier lesen: https://docs.python.org/3/library/stri ... .capwords , Es sind nicht die Droiden, die du suchst, aber vielleicht hilft die Beschreibung dabei, zu überlegen, was du machen willst bzw. musst.
Die Aufgabe ist schlecht gestellt. Da sind zu viele offene Fragen. Zuerst einmal kann man einen String in Python nicht ändern und damit auch kein einzelnes Zeichen.
Dann ist die Frage, wie ist ein Wort definiert? Laut Beispielsatz könnte es bedeuten, dass es reicht, den String an Leerzeichen aufzuteilen, könnte aber auch sein, dass beliebiger Leerraum gemeint ist, ...
Die Aufgabe bedeutet also wahrscheinlich, "schreibe eine Funktion, die einen String als Argument entgegennimmt und einen String zurückliefert, bei dem beim zweiten Wort (Wörter sind durch jeweils exakt ein Leerzeichen getrennt) das erste Zeichen in einen Großbuchstaben geändert wird, sofern es sich um einen Kleinbuchstaben handelt.
Dann ist die Frage, wie ist ein Wort definiert? Laut Beispielsatz könnte es bedeuten, dass es reicht, den String an Leerzeichen aufzuteilen, könnte aber auch sein, dass beliebiger Leerraum gemeint ist, ...
Die Aufgabe bedeutet also wahrscheinlich, "schreibe eine Funktion, die einen String als Argument entgegennimmt und einen String zurückliefert, bei dem beim zweiten Wort (Wörter sind durch jeweils exakt ein Leerzeichen getrennt) das erste Zeichen in einen Großbuchstaben geändert wird, sofern es sich um einen Kleinbuchstaben handelt.
Moin Kudde, viel Spaß bei dem Lehrgang! Danke, dass du deine Aufgabe hier reingestellt hast. Welche Hilfe hättest du gern?
MorgenGrauen: 1 Welt, 8 Rassen, 13 Gilden, >250 Abenteuer, >5000 Waffen & Rüstungen,
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
>7000 NPC, >16000 Räume, >200 freiwillige Programmierer, nur Text, viel Spaß, seit 1992.
- noisefloor
- User
- Beiträge: 4285
- Registriert: Mittwoch 17. Oktober 2007, 21:40
- Wohnort: WW
- Kontaktdaten:
Hallo,
was an Kontext auch noch fehlt, weil explizit auf den "KI Lehrgang" hingewiesen wurde: sollt ihr das mit Bordmitteln von Python lösen? Wurde ja schon angedeutet, dass das mit den Methoden von Strings und Grunddatentypen wie einer Liste ohne Probleme geht.
Oder ist euer Wissensstand so, dass da schon eine wie auch immer geartete KI hinter steckt, die automatisiert eine entsprechende Rechtschreibkorrektur anwenden soll?
Gruß, noisefloor
was an Kontext auch noch fehlt, weil explizit auf den "KI Lehrgang" hingewiesen wurde: sollt ihr das mit Bordmitteln von Python lösen? Wurde ja schon angedeutet, dass das mit den Methoden von Strings und Grunddatentypen wie einer Liste ohne Probleme geht.
Oder ist euer Wissensstand so, dass da schon eine wie auch immer geartete KI hinter steckt, die automatisiert eine entsprechende Rechtschreibkorrektur anwenden soll?
Gruß, noisefloor
- __blackjack__
- User
- Beiträge: 14278
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@kudde: So ganz grundsätzlich kann man Programmieren als Zerlegen des Problems, das gelöst werden soll, in kleinere Teilprobleme sehen. Und die Teilprobleme dann wieder in kleinere Teilprobleme, solange bis diese Teilprobleme so klein sind, das man sie jeweils mit einer Funktion mit wenigen Zeilen lösen kann. So eine Teillösung schreibt und testet man, und wenn die macht was sie soll, wiederholt man das schreiben und testen mit der nächsten Teillösung. Dabei entstehen dann Teillösungen die aus anderen getesteten Teillösungen bestehen, bis man am Ende eine Gesamtlösung hat.
Je nach dem wie man die gestellte Aufgabe hier auffasst, gibt es in Python bereits Funktionen, beziehungsweise Methoden, und Operationen, die es relativ einfach machen die Aufgabe zu lösen, so dass man hier einfach nur ein paar sequentielle Schritte hat, und dafür nicht unbedingt zusätzliche Funktionen schreiben muss.
Einen Einzeiler sehe ich da nicht als erstes, sondern eher drei Schritte: Die nicht veränderbare Zeichenkette in etwas umwandeln wo man tatsächlich etwas ändern kann, suchen/zugreifen und ändern gemäss Aufgabe, und dann wieder eine Zeichenkette aus den Daten erstellen. Oder man überlegt sich wie man die Position des ersten Buchstaben des zweiten Wortes ermitteln könnte und erstellt dann das Ergebnis aus der Teilzeichenkette davor, dem Buchstaben an der Position in einen Grossbuchstaben gewandelt, und der Teilzeichenkette danach.
Alles wird ein bisschen komplizierter falls da mehr als ein Leerzeichen, oder auch Tabulatoren oder Zeilenendezeichen in den Eingabedaten vorkommen dürfen und man das berücksichtigen muss. Noch ein bisschen umständlicher wird es wenn der Satz beispielsweise auch 'Der "cormen" ist ein Buch über Algorithmen' lauten kann. Dann wird es noch ein bisschen interessanter wie genau man da an den ersten Buchstaben des zweiten Wortes, also das c von cormen heran kommt.
Eine Lösung in einer Programmiersprache aus den 70ern (Altair BASIC 8k):
Je nach dem wie man die gestellte Aufgabe hier auffasst, gibt es in Python bereits Funktionen, beziehungsweise Methoden, und Operationen, die es relativ einfach machen die Aufgabe zu lösen, so dass man hier einfach nur ein paar sequentielle Schritte hat, und dafür nicht unbedingt zusätzliche Funktionen schreiben muss.
Einen Einzeiler sehe ich da nicht als erstes, sondern eher drei Schritte: Die nicht veränderbare Zeichenkette in etwas umwandeln wo man tatsächlich etwas ändern kann, suchen/zugreifen und ändern gemäss Aufgabe, und dann wieder eine Zeichenkette aus den Daten erstellen. Oder man überlegt sich wie man die Position des ersten Buchstaben des zweiten Wortes ermitteln könnte und erstellt dann das Ergebnis aus der Teilzeichenkette davor, dem Buchstaben an der Position in einen Grossbuchstaben gewandelt, und der Teilzeichenkette danach.
Alles wird ein bisschen komplizierter falls da mehr als ein Leerzeichen, oder auch Tabulatoren oder Zeilenendezeichen in den Eingabedaten vorkommen dürfen und man das berücksichtigen muss. Noch ein bisschen umständlicher wird es wenn der Satz beispielsweise auch 'Der "cormen" ist ein Buch über Algorithmen' lauten kann. Dann wird es noch ein bisschen interessanter wie genau man da an den ersten Buchstaben des zweiten Wortes, also das c von cormen heran kommt.
Eine Lösung in einer Programmiersprache aus den 70ern (Altair BASIC 8k):
Code: Alles auswählen
LIST
10 S$="Das licht des Mondes beleuchtet DIE Nacht."
20 I=1
30 IF MID$(S$,I,1)<>" " THEN I=I+1:GOTO 30
40 PRINT LEFT$(S$,I);
50 C$=MID$(S$,I+1,1)
60 IF C$>="a" AND C$<="z" THEN C$=CHR$(ASC(C$)-32)
70 PRINT C$;
80 PRINT MID$(S$,I+2)
OK
RUN
Das Licht des Mondes beleuchtet DIE Nacht.
OK“Programming is partially an artform and, like artists, programmers will do it even if they don't get money.” — Linus Torvalds
