«A»: Напишите программу, которая предлагает ввести число-пароль и не переходит к выполнению основной части, пока не введён правильный пароль. Основная часть – вывод на экран «секретных сведений».«B»: Напишите программу, которая получает с клавиатуры натуральное число, которое больше 1, и определяет, простое оно или нет. Для этого нужно делить число на все натуральные числа, начиная с 2, пока не получится деление без остатка.«C»: Напишите программу, которая получает с клавиатуры два целых числа и вычисляет их произведение, используя только операции сложения.«D»: Напишите программу, которая получает с клавиатуры натуральное число и вычисляет целый квадратный корень из него – наибольшее число, квадрат которого не больше данного числа.Задача. Вывести на экран степени числа 2 от 20 до 210.k = 0N = 1while k <= 10 : print(N) N = N*2 k = k + 1 Работа с k в трёх местах! !k = 0k <= 10k = k + 1Идея: собрать всё вместе.N = 1for k in range(11): print(N) N = N*2k in range(11) сделать 11 раз [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] с нуля! не включая 11!
for k in range(11): print(k) Что выведет? ?012…10 Начать на с 0, а с 1:for k in range( 1 ,11): print(k)1for k in [0,1,2,3,4,5,6,7,8,9,10]: print(k)for k in [1,2,3,4,5,6,7,8,9,10]: print(k) начальное значениеЗадача. Найти сумму чисел от 1 до 1000.S = 0for i in range(1,1001): S += iЗадача. Вывести квадраты чисел от 10 до 1 по убыванию.for k in range(10,0,–1): print(k*k) шаг не включая 0for k in [10,9,8,7,6,5,4,3,2,1]: print(k*k)Задача. Найти сумму чётных чисел от 2 до 1000.S = 0for i in range(2,1001): if i % 2 == 0: S += i Что плохо? ?S = 0for i in range(2,1001, 2 ): S += i2 шаг С:int S, i;S = 0;for (i=1; i<=1000; i++) S += i;Паскаль:S:= 0;for i=1 to 1000 do S:= S + i; шаг только 1 или –1 (downto)i=i+1;S=S+i;«A»: Напишите программу, которая находит количество четырёхзначных чисел, которые делятся на 7.«B»: Ипполит задумал трёхзначное число, которое при делении на 15 даёт в остатке 11, а при делении на 11 даёт в остатке 9. Напишите программу, которая находит все такие числа.«C»: С клавиатуры вводится натуральное число N. Программа должна найти факториал этого числа (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например, 5! = 1 • 2 • 3 • 4 • 5 = 120.«D»: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 13 + 53 + 33. Найдите все трёхзначные Армстронга.
§ 21. МассивыМассив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и имеющих общее имя.
Надо: Как ввести 10000 переменных? ? выделять память записывать данные в нужную ячейку читать данные из ячейки
A массив 2 15 НОМЕР элемента массива (ИНДЕКС)
A[0]A[1]A[2]A[3]A[4] ЗНАЧЕНИЕ элемента массива Нумерация с нуля! !
Индекс элемента — это значение, которое указывает на конкретный элемент массива.
i = 1A[2] = A[i] + 2*A[i-1] + A[2*i+1]print( A[2]+A[4] ) Что получится? ?
A[2] = A[1] + 2*A[0] + A[3]print( A[2]+A[4] )101152A[2] ИНДЕКС элемента массива: 2 ЗНАЧЕНИЕ элемента массива
A = [11, 22, 35, 41, 53]A = [11, 22] + [35, 41] + [53]A = [11]*5A = [1, 2, 3, 4, 5]x = 1print( A[x-8] )A[x+4] = A[x-1] + A[2*x]print( A[-7] ) A[5] = A[0] + A[2] Что плохо? ?
Выход за границы массива — это обращение к элементу с индексом, который не существует в массиве.
Перебор элементов: просматриваем все элементы массива и, если нужно, выполняем с каждым из них некоторую операцию.
N = 10A = [0]*N # память уже выделенаfor i in range(N): # здесь работаем с A[i] for i in range(N): A[i] = i В развёрнутом виде
A[0] = 0A[1] = 1A[2] = 2...A[N-1] = N-1012N-1 Что произойдёт? ?
[0, 2, 3, …, N-1] В стиле Python:
A = [ i for i in range(N) ]ii X = NA[0] = NA[1] = N-1A[2] = N-2...A[N-1] = 1for i in range(N): A[i] = X X = X - 1 Как меняется
X? ?
X = N, N-1, …, 2, 1 начальное значение уменьшение на 1
A[i] = X Как связаны
i и
X? ?
i | X |
0 | N |
1 | N-1 |
2 | N-2 |
... | ... |
N-1 | 1 |
–1 +1 Сумма i и X не меняется! !i + X = NX = N - ifor i in range(N): A[i] = N – i В стиле Python:A = [ N-i for i in range(N) ]for i in range(N): print( A[i] ) Как вывести в строчку? ? или так: в столбикВесь массив сразу:print( A )[1,2,3,4,5]По одному элементу:for x in A: print( x ) для всех элементов в массиве Afor x in A: print( x, end=" " ) пробел между элементами