你如何找到字符串中字符的索引?
How do you find the index of a character in a string?
我正在尝试创建一个程序来查找字符串中字符的索引(不使用除范围、if 语句、while 循环或 for 循环之外的任何函数)但我无法弄清楚怎么做。帮助将不胜感激。
def findIndex(char, test):
while char!=testList:
for i in range(len(test)):
if i!=char:
i+=1
if char==test:
print i
print findIndex("e", "alphabet")
def find_index(needle, haystack):
for i in range(len(haystack)):
if needle == haystack[i]:
return i
else:
return -1 # didn't find it
您的代码中缺少什么:
- NameError:
testList
变量未定义,所以NameError
会出现异常。
- range(): 作为范围函数 return 整数列表。在代码中,您正在检查带有字符的整数值,即
if i!=char:
必须类似于 if test[i]==char
并在此 if 循环中打印或 return。
- 不需要需要while循环。
- 最后一个if循环: 不需要最后一个if循环。您正在用永远不会为真的整个字符串检查字符。只有一个搜索字符的字符串才为真。
演示:
>>> range(3)
[0, 1, 2]
通过枚举:
- 通过
raw_input()
从用户处获取字符值。如果用户输入多个字符,则取第一个字符进行处理。
- 检查目标字符串中是否存在字符。如果不存在则 return
-1
即 -1
表示在字符串中找不到字符。
- 使用
enumerate()
迭代字符串。
- 检查字符串中的每一项是否等于搜索字符。
- 如果是则 return 索引值。
代码:
def findIndex(char, target_inoout):
if char in target_inoout:
for i, value in enumerate(target_inoout):
if char==value:
return i
else:
return -1
char = raw_input("Enter singal Character:").strip()[0]
rs = findIndex(char, "alphabet")
if rs==-1:
print "Character %s is not found."%(char)
else:
print "Character %s is found at: %d"%(char, rs)
输出:
vivek@vivek:~/Desktop/Whosebug$ python 31.py
Enter singal Character:e
Character e is found at: 6
vivek@vivek:~/Desktop/Whosebug$ python 31.py
Enter singal Character:z
Character z is not found.
vivek@vivek:~/Desktop/Whosebug$
对于字符串中的多个字符:
代码:
def findIndex(char, target_inoout):
if char in target_inoout:
result = []
for i, value in enumerate(target_inoout):
if char==value:
result.append(i)
return result
else:
return None
char = raw_input("Enter singal Character:").strip()[0]
rs = findIndex(char, "alphabet with some more values.")
if rs:
print "Character %s is found at: %s"%(char, rs)
else:
print "Character %s is not found."%(char)
输出:
vivek@vivek:~/Desktop/Whosebug$ python 31.py
Enter singal Character:m
Character m is found at: [16, 19]
vivek@vivek:~/Desktop/Whosebug$ python 31.py
Enter singal Character:z
Character z is not found.
vivek@vivek:~/Desktop/Whosebug$
我正在尝试创建一个程序来查找字符串中字符的索引(不使用除范围、if 语句、while 循环或 for 循环之外的任何函数)但我无法弄清楚怎么做。帮助将不胜感激。
def findIndex(char, test):
while char!=testList:
for i in range(len(test)):
if i!=char:
i+=1
if char==test:
print i
print findIndex("e", "alphabet")
def find_index(needle, haystack):
for i in range(len(haystack)):
if needle == haystack[i]:
return i
else:
return -1 # didn't find it
您的代码中缺少什么:
- NameError:
testList
变量未定义,所以NameError
会出现异常。 - range(): 作为范围函数 return 整数列表。在代码中,您正在检查带有字符的整数值,即
if i!=char:
必须类似于if test[i]==char
并在此 if 循环中打印或 return。 - 不需要需要while循环。
- 最后一个if循环: 不需要最后一个if循环。您正在用永远不会为真的整个字符串检查字符。只有一个搜索字符的字符串才为真。
演示:
>>> range(3)
[0, 1, 2]
通过枚举:
- 通过
raw_input()
从用户处获取字符值。如果用户输入多个字符,则取第一个字符进行处理。- 检查目标字符串中是否存在字符。如果不存在则 return
-1
即-1
表示在字符串中找不到字符。 - 使用
enumerate()
迭代字符串。 - 检查字符串中的每一项是否等于搜索字符。
- 如果是则 return 索引值。
- 检查目标字符串中是否存在字符。如果不存在则 return
代码:
def findIndex(char, target_inoout):
if char in target_inoout:
for i, value in enumerate(target_inoout):
if char==value:
return i
else:
return -1
char = raw_input("Enter singal Character:").strip()[0]
rs = findIndex(char, "alphabet")
if rs==-1:
print "Character %s is not found."%(char)
else:
print "Character %s is found at: %d"%(char, rs)
输出:
vivek@vivek:~/Desktop/Whosebug$ python 31.py
Enter singal Character:e
Character e is found at: 6
vivek@vivek:~/Desktop/Whosebug$ python 31.py
Enter singal Character:z
Character z is not found.
vivek@vivek:~/Desktop/Whosebug$
对于字符串中的多个字符:
代码:
def findIndex(char, target_inoout):
if char in target_inoout:
result = []
for i, value in enumerate(target_inoout):
if char==value:
result.append(i)
return result
else:
return None
char = raw_input("Enter singal Character:").strip()[0]
rs = findIndex(char, "alphabet with some more values.")
if rs:
print "Character %s is found at: %s"%(char, rs)
else:
print "Character %s is not found."%(char)
输出:
vivek@vivek:~/Desktop/Whosebug$ python 31.py
Enter singal Character:m
Character m is found at: [16, 19]
vivek@vivek:~/Desktop/Whosebug$ python 31.py
Enter singal Character:z
Character z is not found.
vivek@vivek:~/Desktop/Whosebug$