Материал: 17. Введение 18. Линейные программы 19. Ветвления 20. Программирование циклических алгоритмов

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Задачи на циклы (дополнительные)

«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) Что выведет? ?01210 Начать на с 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 переменных? ? выделять память записывать данные в нужную ячейку читать данные из ячейки

5


10


15


20


25


0


1


2


3


4

A массив 2 15 НОМЕР элемента массива (ИНДЕКС)A[0]A[1]A[2]A[3]A[4] ЗНАЧЕНИЕ элемента массива Нумерация с нуля! !Индекс элемента — это значение, которое указывает на конкретный элемент массива.

23


12


7


43


51


0


1


2


3


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]

11


22


35


41


53

A = [11, 22] + [35, 41] + [53]

11


11


11


11


11

A = [11]*5

Что неверно?

A = [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 = N

N





3


2


1

A[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

N





3


2


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=" " ) пробел между элементами
Источник: https://files.student-it.ru/previewfile/258784