我试图在Python中实现rfind
函数,而不使用内置的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
答案 0 :(得分:2)
最简单的方法,恕我直言,只是向后迭代字符串并比较每个字符:
def myrfind(text, aChar):
for i in range(len(text) - 1, -1, -1):
if text[i] == aChar:
return i
return -1
答案 1 :(得分: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 :(得分:0)
所以,在ch
中你有字符,而不是字符的索引,所以即使你找到了它,你也会赢得能够知道它的索引(你只知道该字符在你的text
字符串中,没有别的)
此外,当您发现巧合时,您打印......没有(在print()
)
由于return -1
(未找到时)在for
循环内,因此只要角色不匹配,您就会停止执行(返回-1
)查找字符(您应该非常熟悉return语句)
你反转字符串,但这可能不是很好......"建议",因为那样你的索引就会反转。例如,假设您要查找l
中的最后一个Hello
。你期待的是:
H e l l o
Index 0 1 2 3 4
这应该是3
,但是既然你反转它,并从左到右开始走,你就会得到:
o l l e H
Index 0 1 2 3 4
第一场比赛在1
,现在......你仍然可以做到,但是......你可以将该指数减去总长度,你应该得到它。
首先,我建议你阅读enumerate
内置的内容(不仅要获取角色,还要获取索引)
你所拥有的东西非常接近:
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))
或者,不是反转数组,而是从右边开始阅读(参见range的内容)
def Myrfind(text,aChar):
for i in range(len(text) - 1, -1, -1):
ch = text[i]
if ch == aChar:
return i
return -1