Как я могу подсчитывать строки в списке с помощью цикла while в Python?

avatar
lilai
9 августа 2021 в 00:11
157
1
0

Допустим, у меня есть список с 0 или более элементами, как я могу вернуть количество строк в нем без использования count() или других методов, отличных от цикла while? Я попробовал приведенный ниже код, но он продолжает давать сбой.

values = ["one", "two", [], 6]

def count_str(values):
    index = 0
    while index <= len(values):
        if type(values[index]) == str:
            index += 1
    return index
Источник
Déjà vu
9 августа 2021 в 00:16
0

Проблема в том, что вы используете один и тот же индекс для перебора значений и для подсчета строк... Поэтому, когда это не строка, индекс не изменяется, и цикл никогда не заканчивается. Используйте две переменные.

Ответы (1)

avatar
Richard
9 августа 2021 в 00:21
2

Проблема в том, что у вас бесконечный цикл, потому что вы увеличиваете индекс только тогда, когда это строка, учитывая, что не все экземпляры таковы, цикл никогда не завершается

попытка:

values = ["one", "two", [], 6]

def count_str(values):
  index = 0
  counter = 0
  while index <= len(values)-1:
    if type(values[index]) == str:
      counter += 1
    index += 1
  return counter

ans = count_str(values)
print(ans)