Im folgenden Python-Code wird eine Funktion
next_word(s)definiert, die ange-wendet auf einen Strings
ein Tupel(word, rest)zurückgibt, wobei word das erste
Wort (im Sinne der Erläuterung) in s ist und rest
die Zeichenfolge ist, die in s auf
word folgt. Falls s kein Wort enthält, gibt die Funktion das Tupel
(None, " ")zurück.
Die Definitionen enthalten einen syntaktischen, einen semantischen Fehler und einen
Fehler, der bei vielen (auch kurzen) Eingaben zur Laufzeit auftritt.
Ein Fehler befindet sich in einer Zeile.
Das programm sollte als docstring getestet werden habe es auch versucht im Python tutor..
bin da allerdings nicht weitergekommen...
Ich habe den syntaktischen Fehler gefunden er befindet sich in der Zeile
while s[0] not in LETTERS und es fehlt nach LETTERS ein : da man eine while schleife so
schreibt... ich dachte mir dass es noch ein Fehler bei der def _next_word_helper(s): gibt
da ich mir denke, dass man das 2 te if in der def das aufgerufen wird ein elif sein müsste
oder ??
Liegt der 3. fehler in dieser Zeile ? man muss ja nicht das wort ersetzen sondern es hinzufügen
oder ?
if word_rest:
word = word_rest
Kann mir jemand ganz dringend helfen ??
Vielen Dank
Code: Alles auswählen
import doctest
LETTERS = "abcdefghijklmnopqrstuvwxyz" + \
"ABCDEFGHIJKLMNOPQRSTUVWXYZ" + \
"ÄÖÜäöüß"
def _next_word_helper(s):
"""Helper function for next_word."""
if not s:
return None, s
if s[0] not in LETTERS:
return None, s
word = s[0]
word_rest, s_rest = _next_word_helper(s[1:])
if word_rest:
word = word_rest
return word, s_rest
def next_word(s):
"""Return the first word of an input string s and the rest of it.
Args:
s (str): The input string.
Returns:
(str or None, str): The first word and the rest of s.
Examples:
TODO: INSERT HERE!
>>> next_word("hello world")
('hello, world')
"""
# eat leading punctuation marks, white spaces, etc.
while s[0] not in LETTERS
s = s[1:]
return _next_word_helper(s)
if __name__== "__main__":
doctest.testmod(verbose=True)