Нужно считать строку до точки и подсчитать кол-во слов в строке

Не понимаю где проблема в коде. Пытаюсь считать строку до точки в данном коде:

s = 'Тестовая. Строка'
_str = ''
for i in range(len(s)):
    while s[i] != '.':
        _str += s[i]
print(_str)

Но ничего не выводит, прошу расписать чуть подробнее -- почему?

PS задачей запрещено использовать конструкцию if


Ответы (2 шт):

Автор решения: Alioshca Z

Цикл while у вас выполняется всегда. Можно поменять на такое решение:

s = 'Тестовая. Строка'
_str = ''
for i in range(len(s)):
    if s[i] != '.':
        _str += s[i]
    else:
        break
print(_str)

Для цикла while:

s = 'Тестовая. Строка'
_str = ''
counter = 0

while s[counter] != '.':
    _str += s[counter]
    counter += 1

print(_str)
→ Ссылка
Автор решения: MaxU
s = "Первая тестовая строка. Вторая строка."

res = len(s.partition(".")[0].split())

print(res)
>>> 3

пошагово:

s.partition(".") - разделит строку на три части: подстрока до первого встретившегося разделителя, сам разделитель (".") и оставшаяся после разделителя часть строки:

In [9]: s.partition(".")
Out[9]: ('Первая тестовая строка', '.', ' Вторая строка.')

выберем подстроку до первого разделителя:

In [10]: s.partition(".")[0]
Out[10]: 'Первая тестовая строка'

.split() - разобъет строку на слова

In [11]: s.partition(".")[0].split()
Out[11]: ['Первая', 'тестовая', 'строка']
→ Ссылка