c = 5while c > 0: print("Привет") c -= 1счётчик = 5пока счётчик > ??? print("Привет") счётчик = счётчик ???Идея: запоминать, сколько шагов осталось.
0- 1счётчик -= 1 Как записать иначе последнюю строку? ? условие проверяется при входе в цикл как только условие становится ложным, работа цикла заканчивается если условие ложно в самом начале, цикл не выполняется
ни разуwhile условие: ... тело цикла Если условие никогда не станет ложно? ?
while True: ... бесконечный цикл (зацикливание)
a = 4; b = 6while a < b: a += 12 разаa = 6a = 4; b = 6while a < b: a += b1 разa = 10a = 4; b = 6while a > b: a += 10 разa = 4a = 4; b = 6while a < b: b = a - b1 разb = -2a = 4; b = 6while a < b: a -= 1зацикливаниеЗадача. Вычислить сумму цифр введённого числа. 123 1 + 2 + 3 = 6 Выделить последнюю цифру числа в переменной
N:
d = N % 10 Отбросить последнюю цифру числа в переменной
N:
N = N // 10 123 3 123 12 Добавить к переменной
sum значение переменной
d:
sum = sum + dsum = 6 6 + 4 = 10
d = 4
sum += d выделяем последнюю цифру числа (
%) увеличиваем сумму на значение цифры (
sum+=d) отсекаем последнюю цифру числа (
//)
N | d | sum |
123 | | 0 |
12 | 3 | 3 |
1 | 2 | 5 |
0 | 1 | 6 |
начальные значения начало конец нет да
N != 0?sum= 0d = N % 10sum += dN = N // 10
обнулить сумму
ввод N
выполнять "пока N != 0"
вывод sum
N = int(input("Введите целое число"))sum = 0 print("Сумма цифр числа", N, " равна", sum)while N != 0: d = N % 10 sum += d N = N // 10; N1= NN1, Что плохо? ?
«A»: Напишите программу, которая получает с клавиатуры количество повторений и выводит столько же раз какое-нибудь сообщение.
Пример:__Сколько_раз_повторить_3__Привет!__Привет!__Привет!__«B»'>Пример:Сколько раз повторить? 3Привет!Привет!Привет!«B»: Напишите программу, которая получает с клавиатуры натуральное число и определяет, сколько раз в его десятичной записи встречается цифра 1.
Пример:Введите число? 311Единиц: 2
«C»: Напишите программу, которая получает с клавиатуры натуральное число и находит наибольшую цифру в его десятичной записи. Пример:Введите число: 311Наибольшая цифра: 3«D»: Напишите программу, которая получает с клавиатуры натуральное число и определяет, есть ли в его десятичной записи одинаковые цифры, стоящие рядом. Пример:Введите число: 553 Введите число: 535Ответ: да. Ответ: нет.Задача. Найти наибольший общий делитель (НОД) двух натуральных чисел. Евклид (365-300 до. н. э.) НОД(a,b)= НОД(a-b, b) = НОД(a, b-a) Заменяем большее из двух чисел разностью большего и меньшего до тех пор, пока они не станут равны. Это и есть НОД. НОД (14, 21) = НОД (14, 21-14) = НОД (14, 7)НОД (1998, 2) = НОД (1996, 2) = … = 2Пример: много шагов при большой разнице чисел:= НОД (7, 7) = 7a = b?данетa > b?даa=a-bнетb=b-a начало конецwhile a != b: if a > b: a = a - b else: b = b - a Где будет НОД? Как его вывести? ? Как вывести НОД в формате НОД(14,21) = 7? ? А без дополнительных переменных? ?a -= bb -= a как заменить?НОД(a,b)= НОД(a % b, b) = НОД(a, b % a) Заменяем большее из двух чисел остатком от деления большего на меньшее до тех пор, пока меньшее не станет равно нулю. Тогда большее — это НОД.
НОД (14, 21) = НОД (14, 7) = НОД (0, 7) = 7Пример:
while a != 0 and b != 0: if a > b: a = a % b else: b = b % a Где будет НОД? Как его вывести? ?
if a != 0: print(a)else: print(b)print( ??? )a+bwhile b!=0: a, b = b, a % b print(a) Почему работает? ? заменить
a на
b и
b на (
a % b)
a > b! !
С++:while (a!=0 && b!=0) { if (a > b) a = a % b; else b = b % a; }Паскаль:while (a<>0) and (b<>0) do if a>b then a:= a mod b else b:= b mod a;
«A»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью алгоритма Евклида.
Пример:Введите два числа:21 14НОД(21,14)=7«B»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью
модифицированного алгоритма Евклида. Заполните таблицу:
a | 64168 | 358853 | 6365133 | 17905514 | 549868978 |
b | 82678 | 691042 | 11494962 | 23108855 | 298294835 |
НОД(a,b) | | | | | |
«C»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов цикла для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида.
Пример:Введите два числа:1998 2НОД(1998,2)=2Обычный алгоритм: 998Модифицированный: 1Задача. На вход программы поступает поток данных — последовательность целых чисел, которая
заканчивается нулём. Требуется найти сумму элементов этой последовательности.
while x!=0: # добавить x к сумме # x = следующее число Откуда возьмётся
x в первый раз? ?
Sum = 0x = int(input()) # первое числоwhile x!=0: Sum += x x = int(input()) # ввести следующееprint("Сумма ", Sum) Как найти количество чисел? ? Как найти сумму положительных? ?
«A»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено чисел, которые делятся на 3.
«B»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Определить, сколько получено двузначных чисел, которые заканчиваются на 3.
«C»: На вход программы поступает неизвестное количество чисел целых, ввод заканчивается нулём. Найти максимальное из введённых чётных чисел.