Файл: Алгоритм и его свойства Простейшие программы Вычисления Ветвления Символьные строки Циклические алгоритмы Массивы (списки) Поиск в массиве Алгоритм и его свойства Что такое алгоритм.pptx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 1093
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Координатное поле окна для рисования
Как организовать цикл (36 повторений)?
Как записать значение в переменную?
Сложение чисел: простое решение
Сложение чисел: полное решение
Ввод двух значений в одной строке
Линейный конгруэнтный генератор
Условный оператор: неполная форма
пока ???: если a > b: a = a % b иначе: b = b % aКакое условие??a!=0 and b!=0:Как вывести результат??если a != 0: вывести aиначе: вывести b
for k in range( 3,0,-1): a += 1a = 4
Aмассив215НОМЕР элемента массива(ИНДЕКС)A[0]A[1]A[2]A[3]A[4]ЗНАЧЕНИЕ элемента массиваA[2]НОМЕР (ИНДЕКС) элемента массива: 2ЗНАЧЕНИЕ элемента массива: 15 Массив = таблица!!
a и b (a может быть больше b), а вторая половина массива содержит их квадраты в том же порядке.Пример:Введите границы диапазона:10 55 8 7 10 6 25 64 49 100 36Создание массива:N = 10A = [0]*Nfor i in range(N): A[i] = int( input() )или кратко:A = [int(input()) for i in range(N)]Ввод по одному элементу в строке:Ввод всех чисел в одной строке:data = input() # "1 2 3 4 5"s = data.split() # ["1","2","3","4","5"]A = [ int(x) for x in s ] # [1,2,3,4,5]int(x) или так:A = [int(x) for x in input().split()] Создание массива:Обработка:N = 5A = [0]*N# обработать A[0]# обработать A[1]# обработать A[2]# обработать A[3]# обработать A[4]1) если N велико (1000, 1000000)?2) при изменении N программа не должна меняться!?Обработка с переменной:i = 0# обработать A[i]i += 1# обработать A[i]i += 1# обработать A[i]i += 1# обработать A[i]i += 1# обработать A[i]i += 1Обработка в цикле:i = 0while i < N: # обработать A[i] i += 1Цикл с переменной:for i in range(N): # обработать A[i]
Задачи
«3»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью алгоритма Евклида.Пример:Введите два числа:21 14НОД(21,14)=7«4»: Ввести с клавиатуры два натуральных числа и найти их НОД с помощью модифицированного алгоритма Евклида. Заполните таблицу:| a | 64168 | 358853 | 6365133 | 17905514 | 549868978 |
| b | 82678 | 691042 | 11494962 | 23108855 | 298294835 |
| НОД(a,b) |
Задачи
«5»: Ввести с клавиатуры два натуральных числа и сравнить количество шагов цикла для вычисления их НОД с помощью обычного и модифицированного алгоритмов Евклида.Пример:Введите два числа:1998 2НОД(1998,2)=2Обычный алгоритм: 998Модифицированный: 1Обработка строк в цикле
Задача. Ввести строку и определить, сколько в ней цифр.счётчик = 0для каждого символа строки: если символ – цифра: счётчик += 1 s = input()k = 0for c in s: if c.isdigit(): k += 1 for c in s:для всех символов в строкеесли c – это цифраПроверка символов
if c.isalpha(): print("Буква")if c.islower(): print("Строчная буква")if c.isupper(): print("Заглавная буква")if c.isdigit(): print("Цифра")if c in ["а","б"]: print("Это а или б")Задачи
«3»: Ввести с клавиатуры число в двоичной системе счисления. Определить, сколько в его записи единиц и сколько нулей.Пример:Введите число:1010100Нулей: 4Единиц: 3«4»: Ввести с клавиатуры символьную строку. Если это правильная запись двоичного числа, вывести сообщение «Да», иначе вывести сообщение «Нет». Пример:_Введите_число:_Введите_число:_1010100_abcd10_Да._Нет.__Задачи'>Пример:Введите число: Введите число: 1010100 abcd10 Да. Нет.Задачи
«5»: Ввести с клавиатуры символьную строку и составить новую строку, удалив из исходной все пробелы.Пример:Введите строку:Вася пошел гулять.Васяпошелгулять.Цикл с переменной
Задача. Вывести 10 раз слово «Привет!».Можно ли сделать с циклом «пока»??while : print("Привет!")i = 0i < 10i += 1for : print("Привет!")i in range(10)в диапазоне [0,10)Цикл с переменной:Не включая 10!!range(10) 0, 1, 2, 3, 4, 5, 6, 7, 8, 9Цикл с переменной
Задача. Вывести все степени двойки от 21 до 210.Как сделать с циклом «пока»??while : print ( 2**k )k = 1k <= 10k += 1for : print ( 2**k )k in range(1,11)в диапазоне [1,11)Цикл с переменной:Не включая 11!!range(1,11) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10возведение в степеньЦикл с переменной: другой шаг
100816449362516941Что получится??19254981for : print ( k**2 )k in range(1,11,2)for : print ( k**2 )k in range(10,0,-1)шаг10,9,8,7,6,5,4,3,2,11,3,5,7,9a = 1for k in range( 3): a += 1a = 4a = 1for k in range( 3,1): a += 1a = 1a = 1for k in range( 1,3,-1): a += 1a = 1a = 1for k in range( 3,0,-1): a += 1a = 4
Задачи
«3»: Ипполит задумал трёхзначное число, которое при делении на 15 даёт в остатке 11, а при делении на 11 даёт в остатке 9. Найдите все такие числа. «4»: Вводится натуральное число N. Программа должна найти факториал (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например, 5! = 1 · 2 · 3 · 4 · 5 = 120.Пример:Введите число:55!=120.Задачи
«5»: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 13 + 53 + 33. Найдите все трёхзначные числа Армстронга.Массивы (списки)
Что такое массив?
Массив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и имеющих общее имя. Каждая ячейка в массиве имеет уникальный номер (индекс).Надо:Как ввести 10000 переменных??- выделять память
- записывать данные в нужную ячейку
- читать данные из ячейки
Что такое массив?
| 5 | 10 | 15 | 20 | 25 |
| 0 | 1 | 2 | 3 | 4 |
Массивы в Python: списки
A = [1, 3, 4, 23, 5]Что будет??A = [1, 3] + [4, 23] + [5][1, 3, 4, 23, 5]A = [0]*10[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]Создание массива из N элементов:N = 10A = [0]*NЗаполнение массива
N = 10 # размер массиваA = [0]*N # выделить памятьfor i in range(N): A[i] = i В краткой форме:N = 10 # размер массиваA = [ i for i in range(N) ]Целыми числами (начиная с 0!):iiКак заполнить, начиная с 1??Как заполнить квадратами чисел??Заполнение случайными числами
from random import randintN = 10 # размер массиваA = [0]*N # выделить памятьfor i in range(N): A[i] = randint(20,100) В краткой форме:from random import randintN = 10A = [ randint(20,100) for i in range(N) ]из библиотеки (модуля) randomвзять функцию randintВывод массива на экран
Как список:print ( A )[1, 2, 3, 4, 5]В строчку через пробел:for i in range(N): print ( A[i], end = " " )1 2 3 4 5или так:for x in A: print ( x, end = " " )1 2 3 4 5пробел после вывода очередного числаили так:print ( *A )разбить список на элементыprint (1, 2, 3, 4, 5)Задачи
«3»: Ввести два натуральных числа a и b (a < b) и заполнить массив из 10 элементов случайными числами в диапазоне от a до b.Пример:Введите границы диапазона:5 1010 9 10 6 8 5 9 6 10 9«4»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов случайными числами в диапазоне между a и b (a может быть больше b).Пример:Введите границы диапазона:10 510 9 10 6 8 5 9 6 10 9Задачи
«5»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов: первая половина массива заполняется случайными числами в диапазоне междуa и b (a может быть больше b), а вторая половина массива содержит их квадраты в том же порядке.Пример:Введите границы диапазона:10 55 8 7 10 6 25 64 49 100 36Создание массива:N = 10A = [0]*Nfor i in range(N): A[i] = int( input() )или кратко:A = [int(input()) for i in range(N)]Ввод по одному элементу в строке:Ввод всех чисел в одной строке:data = input() # "1 2 3 4 5"s = data.split() # ["1","2","3","4","5"]A = [ int(x) for x in s ] # [1,2,3,4,5]int(x) или так:A = [int(x) for x in input().split()] Создание массива:Обработка:N = 5A = [0]*N# обработать A[0]# обработать A[1]# обработать A[2]# обработать A[3]# обработать A[4]1) если N велико (1000, 1000000)?2) при изменении N программа не должна меняться!?Обработка с переменной:i = 0# обработать A[i]i += 1# обработать A[i]i += 1# обработать A[i]i += 1# обработать A[i]i += 1# обработать A[i]i += 1Обработка в цикле:i = 0while i < N: # обработать A[i] i += 1Цикл с переменной:for i in range(N): # обработать A[i]
Перебор элементов
Общая схема (можно изменять A[i]):for i in range(N): ... # сделать что-то с A[i]Если не нужно изменять A[i]:for x in A: ... # сделать что-то с xfor i in range(N): A[i] += 1x = A[0], A[1], ..., A[N-1]for x in A: print ( x )Что выведет программа?
A = [2, 3, 1, 4, 6, 5]print( A[3] )print( A[0]+2*A[5] )A[1] = A[0] + A[5]print( 3*A[1]+A[4] )# 4# 12# 7# 27A[2] = A[1]*A[4]print( 2*A[1]+A[2] )# 18# 24for k in range(6): A[k] += 2print( 2*A[3]+3*A[4] )# 36# [4,5,3,6,8,7]Подсчёт нужных элементов
Задача. В массиве записаны данные о росте баскетболистов. Сколько из них имеет рост больше 180 см, но меньше 190 см? count = 0 for x in A: if 180 < x and x < 190: count += 1Как решать??Перебор элементов
summa = 0for x in A: if x % 2 == 0: summa += xprint ( summa )B = [x for x in A if x % 2 == 0]print ( sum(B) )или так:Задача. Найти сумму чётных элементов массива. Как определить, что элемент чётный??сумма массива BКак работает цикл?
summa = 0for x in A: if x % 2 == 0: summa += x| 4 | 3 | 6 | 8 | 1 |