type
Str = record
fio: string;
h: byte;
end;
var
base: array of Str;
i,sum,n,err:integer;
begin
write('Число учеников: '); readln(n);
setlength(base,n);
sum:=0;
writeln('Введите фамилию и рост через "space": ');
for i:=0 to n-1 do
begin
write(i+1:4,'. ');
readln(base[i].fio);
val(copy(base[i].fio,
pos(' ',base[i].fio)+1,
length(base[i].fio)-pos(' ',base[i].fio)),
base[i].h,
err);
delete(base[i].fio,
pos(' ',base[i].fio),
length(base[i].fio));
sum:=sum+base[i].h;
end;
writeln('Средний рост: ',sum/n:4:1);
for i:=0 to n-1 do
if base[i].h<sum/n then
writeln(base[i]);
end.
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, который является функцией, с которой интерпретатор будет выбирать максимум из указанного списка.