1.
· Задания 1, 3, 9 – for (число итераций известно).
· Задания 2, 4, 5, 10 – while (условие зависит от данных).
· Задания 6, 8 – while True + break (выход по желанию пользователя).
· Задание 7 – без цикла (срезы).
for неприменим в 2, 4, 6, 8, 10 – шагов заранее не знаем.
2. Одна переменная экономит память, не нужно хранить все 10 чисел. Это принцип потоковой обработки – важен для больших объёмов данных.
3. Перевожу число в строку, длину = L. k = k % L – так k приводится к диапазону 0..L-1. Результат: s[k:] + s[:k]. Если k больше длины – остаток от деления даёт реальный сдвиг.
4. while True удобен, потому что условие выхода внутри цикла (ответ Cancel). Альтернатива: переменная-флаг go = True, в цикле while go: и меняем go при Cancel.
5. Бинарный поиск гарантирует схождение за O(log n). Для 0–100 (101 число) максимум 7 попыток, так как 2⁶=64 < 101, 2⁷=128 > 101.
6. Для 0 → 1, для 1 → 1, для 10 → 2, для −5 → 1 (знак игнорируем). Всё верно.
7. Можно, но через for пришлось бы перебирать все числа до min(a,b) – медленно. while Евклида работает за логарифм, быстрее.
8. Достаточно перебирать до √n. Каждый делитель i даёт парный n//i. Это уменьшает число итераций с n до √n.
9. Например, пользователь ввёл деление на ноль – программа пишет ошибку и снова просит ввести числа, не завершая цикл. Или ввёл неверный знак операции $ – тоже повторный запрос.
10. Компьютер загадывает случайное число, пользователь вводит варианты. Программа отвечает «больше» или «меньше». Цикл до угадывания. Добавить счётчик попыток и проверку на число.