如何使函数检测字符串中的字符并返回它';在字符串中的位置是什么?Python 3.2

如何使函数检测字符串中的字符并返回它';在字符串中的位置是什么?Python 3.2,python,string,function,character,detect,Python,String,Function,Character,Detect,我要上编程课,明天是期末考试。我正在进行期末练习,我被这个问题困住了: 给定以下函数标题 def首次发生(ch,s): 编写一个方法,返回存储在ch中的字符在字符串s中的第一个匹配项。如果在字符串中找到该字符,则函数应返回其位置。因此,如果s='abcdefg'且ch的值为'd',程序将返回3。如果在字符串中找不到该字符,则程序应返回-1 我试了一下,但运气不好。这就是我所处的位置: def firstOccur(ch, s): b = len(s) n = 0 for

我要上编程课,明天是期末考试。我正在进行期末练习,我被这个问题困住了:

给定以下函数标题

def首次发生(ch,s):

编写一个方法,返回存储在ch中的字符在字符串s中的第一个匹配项。如果在字符串中找到该字符,则函数应返回其位置。因此,如果s='abcdefg'且ch的值为'd',程序将返回3。如果在字符串中找不到该字符,则程序应返回-1

我试了一下,但运气不好。这就是我所处的位置:

def firstOccur(ch, s):
    b = len(s)
    n = 0
    for c in range(b):
        d = ch[0]
        e = s[c]
        if d != e:
            return(-1)
        else:
            while d != e:
                n = n+1
            return(n)
def main():
    a = firstOccur('d', 'abcdefg')
    print(a)
main()

主要功能只是测试FirstOccurse函数。我不知道从这里走到哪里,或者我是否走上了正确的道路。帮助?

你可以试试这样的东西;它将返回索引为零的位置(即,第一个字符为0,第二个字符为1等)。Enumerate能够为您跟踪当前位置

def firstOccur(ch,s):
    for pos, char in enumerate(s):
        if char == ch:
            return pos

    return -1

a = firstOccur('d', 'abcdefg')
// a = 3

好的,让我们把它分解一下。给你一个字符列表,也就是一个字符串。因此,任务是在这个列表上迭代(=循环),直到在列表中第一次出现搜索键为止。一旦你点击了事件,返回它的位置,这也会打破循环。如果在没有找到搜索键的情况下完成循环,则返回
-1
(顺便说一句,
None
在Python中更有意义)

Python为您提供了一个名为
enumerate
的内置函数,它获取一个列表并返回一个元组列表,其中包含元素索引和元素本身。i、 e

['a', 'b', 'c', 'd']
或 “abcd”

变成

[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd')]
这是个无名小卒

def firstOccur(key, string):
    for i, c in enumerate(string):
        if key == c:
            return i
    return -1
如果不允许使用enumerate,那么还有一条“漫长”的道路:

def firstOccur(key, string):
    for i in range(len(string)):
        if key == string[i]:
            return i
    return -1

这与string.find()方法基本相同:) 预计您不允许使用Python基础以外的任何东西来解决此问题

for x in range(len(s)):
    if ch == s[x]:
        return x
return -1

在Python中,不需要像这样循环字符串:
对于范围(b)中的c
。您只需从字符串中获取每个字符:
for character in s
在字符串上循环,依次为您提供每个字符

如果d!=e:return(-1)
-每次你击中一个不是你想要的角色时,你都会返回。另外,如果
ch
是字符,则不需要
ch[0]

Python附带了一个非常方便的函数,名为
enumerate
。这将列出
iterable
中的值及其位置。以下是它的大致外观:

for index, character in enumerate(s):
    if #<test condition here on character>:
        return index
return -1
对于索引,枚举中的字符:
如果:
回报指数
返回-1

更简单的方法是

def first_occur(my_string,my_char):
   try:
       return my_string.index(my_char)
   except ValueError:
       return -1
如果您不允许使用任何类型的方法(我希望我说的没错)或内置的方法,比如range

def first_occur(my_string,my_char):
    count=0:
    for value in my_string:

        if value==my_char:
            return count
        count+=1

   return -1
我认为如果你不能使用enumerate,你就不能使用range


如果您将count+=1移动到for value之后的行,那么列表将被索引为1,否则它将被索引为0。我假设使用内置的
字符串。find
函数(它正好执行此操作)不会被视为正确处理问题?是的,不能使用enumerate,但最后一个正是我需要的,谢谢!