#python #string #character #lab
#python #строка #символ #лабораторная работа
Вопрос:
Я изучаю python и столкнулся с проблемой в лаборатории. Необходимо вычислить самую длинную последовательность s
символа в строке, можно использовать только базовые инструменты, такие как циклы for .
Код, который я придумал, работает, но кажется, что я использую неподходящую логику, добавляя sequence_extended
переменную с дополнительным пробелом. Однако без этого расширения при условии, что последовательность, например sssdssss
, вычисление работает только для первой последовательности.
Может ли быть способ избежать этого расширения? Я пытался найти идею, но решение обычно заключается в использовании функций, которые нам пока запрещено использовать, таких как списки и т. Д.
sequence = input('enter a line: ')
sequence_extended = sequence ' '
counter = 0
final_counter = 0
for symbol in sequence_extended:
if symbol == 's':
counter = 1
else:
if counter > final_counter:
final_counter = counter
counter = 0
print("The longest sequence of 's':", final_counter)
Комментарии:
1. Вам не разрешено использовать словари, верно?
2. @Mick да, точно
3. Это простой вопрос, подождите
4. Вам нужно добавить строку для того, что произойдет, если последним символом будет «s». Как у вас есть сейчас, конечный счетчик обновляется только в том случае, если последний символ не является «s» (почему добавление дополнительного пробела в конце исправляет его).
5. разрешено ли вам использовать цикл while? Я могу сделать это вместо цикла for, если нет
Ответ №1:
sequence = "sssdssss"
max_len = 0
for i in range(len(sequence)):
if sequence[i] == "s":
j = i
length = 0
while j < len(sequence) and sequence[j] == "s":
length = 1
j = 1
if length > max_len:
max_len = length
print("The longest sequence of 's':", max_len)
Комментарии:
1. Большое спасибо! Полностью работает, и я понимаю логику. Ценю это!
2. Нет проблем, счастливого кодирования!
Ответ №2:
На самом деле, я придумал еще менее сложный вариант:
sequence = input('enter a sequence: ')
first_counter = 0
second_counter = 0
for symbol in sequence:
if symbol == 's':
first_counter = 1
if symbol != 's':
first_counter = 0
if second_counter < first_counter:
second_counter = first_counter
print("the longest sequence of 's':", second_counter)
Кажется, это оптимальное решение для этого вопроса. На всякий случай, если у кого-то еще есть такая лаборатория, которую нужно решить.