2016-10-24 2 views
1

rfind 메서드를 사용하지 않고 rfind 함수를 파이썬에서 구현하려고합니다. 다음과 같이 작동해야합니다. 원래 메서드와 달리 입력 문자열과 문자를 매개 변수로 사용하고 문자가있는 위치에서 첫 번째 인덱스를 반환합니다. 지금은 .. 다음에 무엇을해야하는지에 갇히지하고Python에서 rfind를 구현합니다

# main function 
inputString = input("Enter here: ") 
inputChar = input("Which character would you like to find?") 
print(Myrfind(inputString, inputChar)) 

def Myrfind(text,aChar): 
    reverseString = text[::-1] 
    for ch in reverseString: 
     if ch == aChar: 
      print() 
     else: 
      return -1 
+2

을 (range이 무엇 참조)? – furas

+0

@furas 그는 변수의 값을보고 싶어할까요? 그러나 인쇄 기능으로 인해 '반환'이 누락되었을 수 있습니다. – KeyWeeUsr

답변

1

함수는 (현재의 코드에서 최소한의 변경과) 같이해야한다 :

def Myrfind(text,aChar): 
    reverseString = text[::-1] 
    for i, c in enumerate(reverseString): # enumerate() to iterate along with index 
     if c == aChar: 
      return len(text) - i - 1 # Return len(char) - i -1 since reverse string 
    else:   # Return -1 if function is not 
     return -1 # exited by for loop 

샘플 실행 :

>>> Myrfind('Hello', 'o') 
4 
>>> Myrfind('Hello', 'l') 
3 
>>> Myrfind('Hello', 'e') 
1 
>>> Myrfind('Hello', 'a') # 'a' not in string 
-1 
2

가장 간단한 방법 인 IMHO는 문자열을 거꾸로 반복하여 각 문자를 비교하는 것입니다.

def myrfind(text, aChar): 
    for i in range(len(text) - 1, -1, -1): 
     if text[i] == aChar: 
      return i 
    return -1 
0

그래서, ch 당신은 문자가 아닌 문자의 인덱스를, 그래서 당신이 그것을 찾을 경우에도, 당신은 (당신은 단지 문자에 있음을 알고 인덱스를 알 수 없습니다 text 문자열이 우연의 일치를 찾을 때, 당신은 인쇄하지 ... (

) print()에서 그리고 이후 아무것도 return -1 (없는 경우) for 루프 내에 당신, 아무것도) 또한

는, 당신은 것입니다 문자가 입력 되 자마자 실행을 중단하십시오 (-1 반환). 문자를 쳐다 본다. (return 문에 매우 익숙해야한다.)

문자열을 뒤집지 만 그다지 ... "조언할만한"것은 아니다. 왜냐하면 색인이 바뀌기 때문이다. 예를 들어 lHello에 넣고 싶다고 가정 해 봅시다. ,

 o l l e H 
Index 0 1 2 3 4 

을 그리고 첫 경기는 1에 있습니다

 H e l l o 
Index 0 1 2 3 4 

을 그리고 그 3해야하지만, 당신이 그것을 반대하고, 왼쪽에서 오른쪽으로 걷기 시작하기 때문에, 당신은 얻을 : 당신은 기대 지금 ... 당신은 여전히 ​​그것을 할 수 있습니다 ... 그러나 당신은 총 길이에 해당 인덱스를 빼낼 수 있습니다.

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)) 
:

첫째, 난 당신이 (문자를 구할 수있을뿐만 아니고에뿐만 아니라 인덱스)를 enumerate 내장이 무엇을 읽을

은 당신이 무엇을 예쁜 가까운 일이 될 수있다 추천 당신은`()`대신`return`의 인쇄를 사용 않는 이유

또는 대신 배열을 반전의 바로 오른쪽에서 읽기 시작

def Myrfind(text,aChar): 
    for i in range(len(text) - 1, -1, -1): 
     ch = text[i] 
     if ch == aChar: 
      return i 
    return -1 
관련 문제