Python 3.7
import re
import string
def clrStr(strng: str) -> str:
return re.sub(r' +', ' ', re.sub(rf'[{string.punctuation}]|\n', '', strng))
raw_string = input()
clean_string = clrStr(raw_string)
print(max(clean_string.split(' '), key = lambda p: len(p)))
И никаких велосипедов с перебором всего списка слов в цикле.
Объяснение:
Да, я специально решил эту задачу не так, как просят в условии. Ведь в условии вам максимально разжевали подход к решению. Но, стоит заметить, что по дурацки. Питоньи списки можно перебирать циклом вида for item in list, не обращаясь к исходному списку по индексам. Так же функция max() может принимать аргумент key, который является функцией, с которой интерпретатор будет выбирать максимум из указанного списка.
var p,i,x,count: integer;
begin
count := 0;
p := 0 ;
for i := 1 to 4 do begin
read (x);
if x >= 0 then begin
p := p*x;
count := count+1
end
end;
if count > 0 then begin
writeln(х );
writeln(p);
end
else
writeln('NO')
end
Переменная p в начале равняется нулю. В эту переменную будет записываться общее произведение неотрицательных чисел, умножая p на каждое неотрицательное число, но при умножении любого числа на 0 произведение будет 0, поэтому нужно в начале присвоить ей единицуВ конце выводится последнее введённое число, а нужно вывести количествоПосле end не стоит точкаПравильный вариант программыvar p,i,x,count: integer;
begin
count := 0;
p := 1;
for i := 1 to 4 do begin
read (x);
if x >= 0 then begin
p := p*x;
count := count+1
end
end;
if count > 0 then begin
writeln(count);
writeln(p);
end
else
writeln('NO')
end.
20 480 байт
Объяснение: