Уроки 44–45 · 2 урока · М. Р. Файзиева, Д. М. Сайфуров, Н. С. Хайтуллаева. Информатика и информационные технологии, 9 класс. «Nashriyot uyi Tasvir», Ташкент, 2020
45
Практическое занятие: оператор while
Учебник: с. 88–89
ЦельНа практическом занятии работает с цифрами числа с помощью while (сумма, подсчёт) и пишет программы, которые повторяются в зависимости от ответа пользователя.
Новые слова
сумма цифр: прибавить x % 10, затем убрать последнюю цифру с помощью x //= 10 · raqamlar yig‘indisiигра-угадайка: цикл повторяется, пока догадка не совпадёт · sinov-xato o‘yiniпеременная цикла: значение, изменяемое в теле, чтобы условие могло остановить цикл · sikl o‘zgaruvchisiтрассировочная таблица: таблица значений переменных после каждого прохода · kuzatuv jadvali
Объяснение
Лучшее применение цикла while – работа с цифрами числа. Сумма цифр: s = 0; цикл выполняется, пока x > 0; каждый раз последняя цифра прибавляется к s (x % 10) и убирается из x (x //= 10). По тому же шаблону считают число цифр, только вместо s += x % 10 ставят k += 1. Второй вид задач – спрашивать, пока ответ не будет правильным: первый ответ запрашивается до цикла, условие записывается как «ответ неверен», а в теле ответ запрашивается снова и обновляется. В этой игре загаданное число задаётся внутри программы; случайное число мы изучим позже (модуль random). Выполняйте каждую программу вручную в трассировочной таблице: тогда ясно, когда цикл остановится.
Примеры
Сумма цифр: x = int(input()) ⏎ s = 0 ⏎ while x > 0: ⏎ s += x % 10 ⏎ x //= 10 ⏎ print(s) Для 2749 выводится 9 + 4 + 7 + 2 = 22.
Угадывание: guess = int(input()) ⏎ while guess != 7: ⏎ print("Yana urining") ⏎ guess = int(input()) ⏎ print("Topdingiz") 3 и 9 неверны, поэтому «Yana urining» выводится дважды; когда набирают 7, цикл заканчивается и выводится «Topdingiz».
Работа в классе
«Игра с цифрами»: пары выбирают собственные числа, выполняют программу суммы цифр в трассировочной таблице и сравнивают итоговый ответ с IDLE; затем изменяют программу для «произведения цифр».
Упражнения
1
Чему равна сумма цифр числа 5081?
14
2
Напишите программу, которая с помощью while находит сумму чисел от 1 до n (55 при n = 10).
n = int(input()) ⏎ i = 1 ⏎ s = 0 ⏎ while i <= n: ⏎ s += i ⏎ i += 1 ⏎ print(s)
3
Сколько цифр 0 в числе 40105? Напишите программу, которая их подсчитывает.
x = int(input()) ⏎ k = 0 ⏎ while x > 0: ⏎ if x % 10 == 0: ⏎ k += 1 ⏎ x //= 10 ⏎ print(k) Ответ: 2.
4
Почему цикл по цифрам никогда не останавливается без x //= 10?
x не меняется, поэтому условие x > 0 остаётся истинным; x //= 10 уменьшает x, пока оно не достигнет нуля.