2016-11-05 4 views
2

Ich versuche, meine Funktion suchen doppelte Wörter und wenn ja, sollte die Ausgabe True oder False sein, je nachdem, ob es doppelte Wörter sind. Zum Beispiel:Suche nach doppelten Wörtern in einer Zeichenfolge python

doubleWord("cat") --> False .  
doubleWord("catcat") --> True . 
doubleWord("contour" * 2) --> True 

Bisher habe ich dies:

def main(): 

    word = input("Enter a string: ") 

    half = len(word) >> 1 
    if word[:half] == word[half:]: 
     print("True") 
    else: 
     print("False") 

    return 
    print(main()) 

wenn Namen == "Haupt": main()

Jede Hilfe wäre sehr geschätzt. Ich dachte, dass es vielleicht einfacher wäre, Slicen zu verwenden, aber ich habe keine Ahnung, wie ich das in meinem Code implementieren könnte. Vielen Dank!

+7

Was genau ist es Sie versuchen, zu tun? In deinem Beispiel sagst du, dass du glaubst, "catcat" sollte "True" zurückgeben. Aber in Ihrem Code teilen Sie die Eingabe dort auf, wo es ein Leerzeichen gibt, also wird "catcat" als ein einzelnes Wort betrachtet. – Batman

+0

@Batman Ich versuche es zu erkennen, dass es wiederholte Wörter/Buchstaben gibt. –

Antwort

2

Sie müssen nur den ersten Teil mit dem zweiten vergleichen, können Sie dies tun, wie dies mit dem Schneiden:

def doubleWord(word): 
    return word[len(word) // 2:] == word[:len(word) // 2] 
+0

nett ein Liner. Ich würde es optimieren, um 'False 'zurückzugeben, wenn' len (Wort) 'ungerade ist. –

+0

So funktioniert es bis zur Eingabekontur * 2. Irgendwelche Ideen warum? –

Verwandte Themen