Учитывая список строк, верните счетчик числа строк, где длина строки равна 3 или более, а первая и последняя символы строки одинаковы.Как вернуть число раз, когда строка с конкретными требованиями появляется в списке?
Чтобы решить эту проблему, я создал следующую функцию,
def match_ends(words):
FirstL=words[0:1]
LastL=words[-1:]
x=len(words)>3 and FirstL == LastL
count=0
for x in words:
count+=1
return count
тестируют его здесь,
def test(got, expected):
if got == expected:
prefix = ' OK '
else:
prefix = ' X '
print ('%s got: %s expected: %s' % (prefix, repr(got), repr(expected)))
# Calls the above functions with interesting inputs.
def main():
print ('match_ends')
test(match_ends(['abaa', 'xyzax', 'aa', 'x', 'bbb']), 3)
test(match_ends(['', 'x', 'xy', 'xyx', 'xx']), 1)
test(match_ends(['aaa', 'be', 'abc', 'hello']), 1)
print
Результат:
X got: 1 expected: 3
OK got: 1 expected: 1
OK got: 1 expected: 1
В то время как я одобряю то, как вы нарушили это, я должен протестовать против того, чтобы таким образом разобраться в ваших списках. Этот код может быть ясным, даже если он сконденсирован в одну строку - об единственном времени, когда должны выполняться многострочные списки, - это когда риск превысит 72 символа в строке. –
Как человек, который профессионально преподавал Python более 10 лет, я категорически не согласен. Синтаксис синтаксиса списка постоянно дезориентирует новичков (и не так-новичков) на язык, и я обнаружил, что их разбивка таким образом значительно помогает им понять, что происходит. В тот момент, когда я начал (около двух лет назад) писать свои списки, таким образом, понимание моих учеников значительно улучшилось. – reuven