Also, in ch
Sie haben den Charakter, nicht der Index des Zeichens, also auch wenn Sie es finden, werden Sie nicht in der Lage sein, seinen Index zu kennen (Sie wissen nur, dass das Zeichen in Ihre text
string, sonst nichts)
auch, wenn Sie einen Zufall finden, Sie drucken ... nichts (in print()
)
Und da die return -1
(wenn nicht gefunden) befindet sich in der for
Schleife, werden Sie Stoppen Sie die Ausführung (Rückgabe -1
), sobald ein Zeichen nicht mattiert ch das nachgeschlagene Zeichen (Sie sollten sehr vertraut sein mit der return Anweisung)
Sie kehren die Zeichenfolge um, aber das ist wahrscheinlich nicht sehr ... "raten", weil dann Ihre Indizes umgekehrt werden. Angenommen, Sie möchten die letzte l
in Hello
finden. Sie erwarten:
H e l l o
Index 0 1 2 3 4
Und das 3
sein sollte, aber da Sie es umgekehrt, und starten Sie es von links nach rechts zu Fuß erhalten Sie:
o l l e H
Index 0 1 2 3 4
Und das erste Spiel ist in 1
, Jetzt ... Sie können es immer noch tun ... Sie können diesen Index auf die Gesamtlänge subtrahieren, und Sie sollten es bekommen.
Erstens würde ich empfehlen, lesen Sie, was die enumerate
Einbau-tut (nicht nur den Charakter, aber auch der Index)
Ein ziemlich nahe, was zu dem, was Sie haben könnten sein:
inputString = input("Enter here: ")
inputChar = input("Which character would you like to find?")
def Myrfind(text,aChar):
reverseString = text[::-1]
for i, ch in enumerate(reverseString):
if ch == aChar:
return len(text) - 1 - i
return -1
print(Myrfind(inputString, inputChar))
Oder stattdessen das Array invertieren, starten Sie einfach von rechts zu lesen (was range tut)
def Myrfind(text,aChar):
for i in range(len(text) - 1, -1, -1):
ch = text[i]
if ch == aChar:
return i
return -1
warum verwenden Sie 'print()' statt 'return'? – furas
@furas will er den Wert der Variablen sehen, vielleicht? Aber vielleicht gibt es nach der Druckfunktion 'return'. – KeyWeeUsr