2017-11-08 5 views
0

Ich versuche, eine Funktion zu erstellen, die die Enden einer Zeichenfolge in Python untersucht und eine Ganzzahl zurückgibt, wenn sie den Bedingungen entspricht, die ich definiert habe, jedoch habe ich ein Problem mit den Zahlen überlappend gibt es eine Möglichkeit für mich zu erhalten Um dies einfach mit nur eingebauten String-Funktionen und ohne Import? So sollte zum Beispiel die Saite "AAZZ" zu mir zwei zurückkommen, aber stattdessen vier zurückgeben. Die Bedingungen sind A stimmt mit Z überein, und Y stimmt mit C überein. Die Funktion sucht nach passenden Paaren, bis sie auf ein Paar trifft, das nicht übereinstimmt, wo es stoppt und den Wert zurückgibt, den es für die Zählung hat. Hier ist das, was ich bisher:Wie sehe ich speziell die Enden einer Zeichenfolge in Python?

def matching(str): 
    i = 0 
    j = -1 
    count = 0 

    while i < len(str): 
     if str[i] == 'A' and str[j] == 'Z': 
      i += 1 
      j -= 1 
      count += 1 
     elif str[i] == 'Z' and str[j] == 'A': 
      i += 1 
      j -= 1 
      count += 1  
     elif str[i] == 'Y' and str[j] == 'C': 
      i += 1 
      j -= 1 
      count += 1 
     elif str[i] == 'C' and str[j] == 'Y': 
      i += 1 
      j -= 1 
      count += 1   
     else: 
      count = 0 
    return count 
+4

Sie haben nicht gesagt, welche Regeln Sie implementieren möchten. Warum kehrt AAZZ zurück? – Blorgbeard

+0

Auch ich bin mir ziemlich sicher, wenn Sie die "sonst" Bedingung treffen, werden Sie * Schleife für immer * –

+0

ich geschafft, sonst zu beheben, um zurückzuzählen, sollte das in Ordnung sein danke – KMAN

Antwort

1

Sie müssen den Zustand i < len(str) + j ändern, sonst werden Sie alles zweimal werden gezählt (einmal von jedem Ende).

+0

Vielen Dank für diesen Fang, Funktion scheint in Ordnung zu sein jetzt – KMAN

+0

In Zukunft wird es hilfreich sein, den Editierkommentar korrekt auszufüllen: Die Änderung des OP-Codes ist kein "fixing indentation" und sollte erläutert werden, wenn Sie Ihre Bearbeitung genehmigen lassen möchten. Ich habe nur meinen Fehler bemerkt (und dass deine Bearbeitung korrekt war), weil ich nach der Überprüfung sagen wollte, dass sie falsch ist. Das sagte, tut mir leid. – TemporalWolf

+0

@TemporalWolf beziehen Sie sich auf die Tatsache, dass ich seinen Code auf das Original (ohne die "+ j") zurückgesetzt? – jhpratt

Verwandte Themen