Загрузка данных


1. В чём принципиальное отличие цикла while от цикла for? В каких случаях предпочтительнее использовать каждый из них?

Цикл while выполняется до тех пор, пока условие истинно. Его используют, когда заранее неизвестно количество повторений.
Цикл for применяют, когда количество повторений известно заранее или нужно перебрать элементы последовательности.

⸻

2. Что произойдёт, если в теле цикла while не изменить переменную, влияющую на условие? Как этого избежать?

Если не изменять переменную условия, цикл может стать бесконечным и программа не завершится.
Чтобы избежать этого, нужно изменять переменную внутри цикла так, чтобы условие со временем стало ложным.

⸻

3. В чём разница между операторами break и continue? Приведите примеры использования каждого.

break полностью завершает выполнение цикла.
continue пропускает текущую итерацию и переходит к следующей.

Пример break:

i = 0
while True:
    if i == 5:
        break
    print(i)
    i += 1

Пример continue:

i = 0
while i < 5:
    i += 1
    if i == 3:
        continue
    print(i)

⸻

4. Как с помощью цикла while организовать повторный запрос данных от пользователя до тех пор, пока не будет введено корректное значение?

Нужно использовать цикл while, который будет повторяться до тех пор, пока пользователь не введёт правильные данные. Обычно дополнительно используют проверку условия или конструкцию try-except.

Пример:

while True:
    num = int(input("Введите число больше 0: "))
    if num > 0:
        break

⸻

5. Что такое бесконечный цикл? Как его создать намеренно и как из него выйти?

Бесконечный цикл — это цикл, который никогда не заканчивается, потому что его условие всегда истинно.

Пример:

while True:
    print("Работа программы")

Выйти из такого цикла можно с помощью оператора break.

⸻

6. Как с помощью цикла while вычислить сумму цифр числа? Опишите алгоритм.

Алгоритм:

1. Получить последнюю цифру числа через остаток от деления % 10.
2. Добавить её к сумме.
3. Удалить последнюю цифру через целочисленное деление // 10.
4. Повторять, пока число больше нуля.

Пример:

n = 1234
sum_digits = 0
while n > 0:
    sum_digits += n % 10
    n //= 10
print(sum_digits)

⸻

7. Как с помощью цикла while проверить, является ли число простым? Опишите алгоритм.

Нужно проверять, делится ли число без остатка на числа от 2 до самого числа минус 1.
Если найден делитель, число составное. Если делителей нет, число простое.

Пример:

n = int(input("Введите число: "))
i = 2
is_prime = True
while i < n:
    if n % i == 0:
        is_prime = False
        break
    i += 1
if is_prime:
    print("Число простое")
else:
    print("Число составное")

⸻

8. Почему в задачах с накоплением суммы (аккумулятором) важно правильно инициализировать переменную-аккумулятор перед циклом?

Если неправильно задать начальное значение аккумулятора, результат вычислений будет неверным.
Для суммы обычно используют 0, а для произведения — 1.

⸻

9. Какие типичные ошибки допускают начинающие программисты при работе с циклом while?

Типичные ошибки:

* забывают изменять переменную условия;
* создают бесконечный цикл;
* неправильно записывают условие;
* делают ошибки в отступах;
* неверно инициализируют переменные;
* забывают увеличивать счётчик.

⸻

10. Как с помощью цикла while и операций деления нацело и взятия остатка можно развернуть число (например, 1234 в 4321)?

Алгоритм:

1. Получать последнюю цифру через % 10.
2. Добавлять её в новое число.
3. Удалять последнюю цифру через // 10.
4. Повторять, пока число не станет равно 0.

Пример:

n = 1234
reverse = 0
while n > 0:
    digit = n % 10
    reverse = reverse * 10 + digit
    n //= 10
print(reverse)