Итак, у меня есть этот вопрос, который я должен сделать для домашней работы.Как я могу выполнить проверку только один раз?
Затем напишите ind (e, L). Вот его описание:
Записать ind (e, L), который принимает последовательность L и элемент e. L может быть строкой или, в более общем плане, списком. Ваша функция ind должна возвращать индекс, по которому e сначала находится в L. Подсчет начинается с 0, как обычно со списками. Если e не является элементом L, то ind (e, L) должен возвращать целое число, равное len (L). Вот несколько примеров:
ind(42, [ 55, 77, 42, 12, 42, 100 ]) returns 2
ind(42, range(0,100)) returns 42
ind('hi', [ 'hello', 42, True ]) returns 3
ind('hi', [ 'well', 'hi', 'there' ]) returns 1
ind('i', 'team') returns 4
ind(' ', 'outer exploration') returns 5
В этом последнем примере, первый вход отра является строка из одного символа пробела, не пустая строка.
Подсказка: Так же, как вы можете проверить, входит ли элемент в последовательности с
если е в L: вы также можете проверить, является ли элемент не в последовательности с
если е не L: Этот последний синтаксис полезен для функции ind! Как и точка, ind, вероятно, наиболее похож на mylen из примеров классов.
И вот это один раз из многих кодов, которые я написал для этой проблемы.
def ind(e, L):
num = 0
if e not in L and num == 0:
return len(L)
else:
if e == L[0]:
num += 1 + ind(e, L[1:])
return num
else:
return ind(e, L[1:])
Таким образом, проблема в том, что каждый раз e больше не входит в список. Он занимает длину оставшейся части списка и добавляет к num. Как это исправить???
Можете ли вы объяснить строку 'Num + = 1 + Ind (е, L [1:])' для вашего [резиновая утка] (HTTPS://en.wikipedia.org/wiki/Rubber_duck_debugging)? – Jasper