Функция для возврата индекса, по которому происходит конкретная буква, всегда ничего не возвращает независимо от ввода в Python? - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь написать код, который будет возвращать индекс, при котором буква c появляется впервые, или None, если c отсутствует в строке.Вот что я придумал:

def find_c(f):
    z = 0
    c_pos = None
    while c_pos is None or z < len(f):
        if f[z] == 'c' or f[z] == 'C':
            c_pos = z
            z += 1
        return c_pos

Но независимо от того, какую строку я ввожу, мой вывод всегда равен None.Любая помощь?

1 Ответ

0 голосов
/ 14 октября 2018

Если вы все еще хотите использовать цикл while, после того, как вы найдете индекс первого 'C', вы, вероятно, просто захотите вернуть этот индекс вместо того, чтобы перебирать оставшуюся часть строки.

def find_c(f):
    z = 0
    while z < len(f):
        if f[z] == 'c' or f[z] == 'C':
            return z # Returns first index where it finds 'c'
        z += 1
    return None # Return None if never found

Однако более простым способом сделать это вместо использования цикла while было бы использование цикла for, перечисляющего значения.Вы также можете использовать функцию .lower(), чтобы сделать символы строчными, поэтому вам нужно сравнивать только с 'c', как и с другим упомянутым комментатором.

Вместо этого используйте цикл for:

def find_c(f):
    for index, char in enumerate(f):
        if char.lower() == 'c':
            return index # Returns first index where it finds 'c'
    return None # Return None if never found (reached end of string)
...