Python: hier Finden Sie das längste Wort in einem string

Ich bin auf eine Prüfung vorbereiten, aber ich habe Schwierigkeiten mit einer Vergangenheit-Papier in Frage. Gegeben ein string, der einen Satz, den ich finden will, das längste Wort in diesem Satz und Rückkehr, das Wort und seine Länge. Edit: ich brauchte nur zurück die Länge, aber ich Schätze Ihre Antworten auf die ursprüngliche Frage! Es hilft mir, mehr zu lernen. Danke.

Beispiel: string = "Hallo ich mag Kekse". Mein Programm soll dann die Rückkehr von "Cookies" und die Länge 7.

Nun die Sache ist die, dass ich nicht erlaubt, jede Funktion aus der Klasse String für eine volle Punktzahl und eine volle Punktzahl, kann ich nur gehen durch die Kette einmal. Ich bin nicht berechtigt, die Verwendung von string.split() (sonst würde es kein problem sein) und die Lösung sollte nicht zu viele for-und while-Anweisungen. Die strings enthält nur Buchstaben und Leerzeichen und Wörter getrennt durch ein Leerzeichen.

Irgendwelche Vorschläge? Ich bin verloren also ich habe keinen code.

Dank.

BEARBEITEN: tut mir Leid, habe ich falsch verstanden, die Klausur-Frage. Sie müssen nur zurück die Länge das längste Wort, es scheint, nicht die Länge + das Wort.

EDIT2: Okay, mit Ihrer Hilfe, ich denke ich bin auf etwas...

def longestword(x):
      alist = []
      length = 0
      for letter in x:
             if letter != " ":
                     length += 1
             else:
                     alist.append(length)
                     length = 0
      return alist

Aber es gibt [5, 1, 4] für "Hello I like cookies", also es findet "cookies". Warum? EDIT: Ok, ich habe es. Es ist, weil es keine mehr "" nach dem letzten Buchstaben des Satzes und daher nicht Anhängen der Länge. I fixed it so, jetzt ist es zurück [5, 1, 4, 7] und dann habe ich einfach den maximalen Wert.

Nehme ich mit, die Listen aber nicht .split() ist in Ordnung? Er sagte nur, dass die Funktionen von "String" nicht durften oder Listen sind Teil des strings?

  • Technisch, können Sie importieren Sie die string-Modul und Aufruf von split aus gibt es da würden Sie nicht benutzen, von der string-Klasse. Vielleicht ist das ein test von wissen, die Dokumentation.
  • Wenn Sie testen nur, dass der Brief nicht " ", wird es nicht mit Satzzeichen: Hello, I like cookies!". Du solltest besser testen, daß das Zeichen kein Buchstabe ist.
  • mein bad wieder. Er sagt, bei der Prüfung der Frage, dass "Der text enthält nur Buchstaben und Leerzeichen, und jedes Wort wird getrennt durch ein Leerzeichen". Dann ist es gut?
  • Ja, in diesem Fall funktioniert es: Ihr test ist auch schneller als meine, und einfacher als die Verwendung von regulären Ausdrücken.
InformationsquelleAutor Mmt | 2015-03-11
Schreibe einen Kommentar