Еще одно очень красивое и очень странное решение через словари.
n = int(input())
print({1<=n<=4: "Начальная школа",
5<=n<=9: "Среднее звено",
10<=n<=11: "Старшее звено"}[True])
Здесь мы создаем неименованный словарь, который в качестве ключа использует условное выражение, а в качестве значения - соответствующую этому выражению строку.
Когда мы тут же передаем ему в качестве ключа True, словарь начнет проверять ключи и вернет именно то значение, у которого выражение-ключ было истинным.
2.
@array; #Формат ввода не задан, будем считать что он уже заполнен.
$min = $array[0];
$max = $array[0];
for $i (@array) {
$min = $i if ($i < $min);
$max = $i if ($i > $min);
}
%hash = map {$_ => 1} @array;
for $i in ($min..$max) {
print "$i " if (!(exists $hash{$i}));
}
3.
use Quantum::Superpositions; #Модуль для квантовых вычислений, жутко удобная штука.
@primes;
$n = <>;
push @primes, ($i) if ($i % all(2..sqrt($i)+1) != 0) i for $i (2..$n);
#ответ в массиве @primes.
4. На этот вопрос я не так давно отвечал, ну ладно.
$n = <>;
@multipliers;
for $i (2..$n) {
if (!($n % $i)) {
push @multipliers, ($i);
$n /= i;
}
}
#ответ в массиве @multipliers.
А теперь укажите-таки язык и я, если с этим языком знаком напишу нормальный, не извращённый ответ.