Top.Mail.Ru
Ответы

Python, помогите пожалуйста

В строке имеется несколько слов, разделенных одним или несколькими пробелами. Требуется убрать из текста лишние пробелы: два и более пробелов подряд, а также все пробелы в начале и в конце строки.
Вот мой код на 4 и 5 тесте пишет ошибка выполнения, остальные на ок, что не так?
s = input()
s = s.lstrip()
s = s.rstrip()
f = len(s)
t = str()
for i in range(len(s)):
if s[i] != " ":
t += s[i]
count = 0
else:
count += 1
if count == 1:
print(t, end = " ")
t = ""
t = ""
while s[f - 1] != " ":
t += s[f - 1]
f -= 1
print(t[::-1])

По дате
По рейтингу
Аватар пользователя
Новичок

Без отступов тут всё не так. Будет не ошибка выполнения, а ошибка компиляции. Предлагаешь угадывать, какие операторы вложенные, а какие - нет?

В общем, без регулярок, сплитов и замен, и в один проход, это делается так:

12
 from itertools import pairwise
print(''.join(c for c, d in pairwise(input().strip() + ' ') if not (c == d == ' '))) 


Или так:

12
 s = input().strip()
print(''.join(s[i] for i in range(len(s) - 1) if not (s[i] == s[i+1] == ' ')) + s[-1]) 
Аватар пользователя
Знаток
12345678910111213141516
 s = input() 
s = s.strip() 
result = "" 
count = 0 
 
for i in range(len(s)): 
    if s[i] != " ": 
        result += s[i] 
        count = 0 
    else: 
        count += 1 
        if count == 1: 
            result += " " 
 
print(result) 
 
Аватар пользователя
Ученик

left_right = 0
up_down = 0
range_counter = 1

def parse_arg(arg: str, start: int = 0):
i = arg.index(')', start)
if i == start: return 1
return int(arg[start:i])

while True:
cmd = input()
if len(cmd.strip()) == 0: continue
if cmd[0] == '#': break

if cmd.startswith('for'):
range_counter = parse_arg(cmd, cmd.index('range(') + 6)
continue

if not cmd.startswith((' ', '\t')):
range_counter = 1

Аватар пользователя
Высший разум
12
 import re
print(re.sub(r'\s+', ' ', input().strip())) 
123
 s, s0 = input().strip(), ''
while s != s0: s, s0 = s.replace('  ', ' '), s
print(s) 
1234
 s = input().strip()
for i in range(len(s) - 2, -1, -1):
  if s[i] == ' ' and s[i + 1] == ' ': s = s[:i] + s[i + 1:]
print(s) 
1234
 s, t = input().strip(), ''
for i in range(len(s)):
  if s[i] != ' ' or s[i - 1] != ' ': t += s[i]
print(t) 
Аватар пользователя
Мыслитель

Ваша задача решается так:

1
 print(' '.join(input().strip().split())) 

Берем input(), методом strip() убираем все пробелы в начале и в конце строки. Затем, методом split() разбиваем текст в список всех символов, разделенных любым количеством пробелов, и методом ' '.join() возвращаем эти символы к строке, оставляя между ними только один пробел.