Файл: Алгоритм и его свойства Простейшие программы Вычисления Ветвления Символьные строки Циклические алгоритмы Массивы (списки) Поиск в массиве Алгоритм и его свойства Что такое алгоритм.pptx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 261
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
Координатное поле окна для рисования
Как организовать цикл (36 повторений)?
Как записать значение в переменную?
Сложение чисел: простое решение
Сложение чисел: полное решение
Ввод двух значений в одной строке
Линейный конгруэнтный генератор
Условный оператор: неполная форма
пока ???:
если a > b:
a = a % b
иначе:
b = b % a
Какое условие?
?
a!=0 and b!=0:
Как вывести результат?
?
если a != 0:
вывести a
иначе:
вывести b
Задачи
«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 = 0
for 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 = 0
i < 10
i += 1
for :
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 = 1
k <= 10
k += 1
for :
print ( 2**k )
k in range(1,11)
в диапазоне [1,11)
Цикл с переменной:
Не включая 11!
!
range(1,11) 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
возведение в степень
Цикл с переменной: другой шаг
100
81
64
49
36
25
16
9
4
1
Что получится?
?
1
9
25
49
81
for :
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,1
1,3,5,7,9
a = 1
for k in range( 3): a += 1
a = 4
a = 1
for k in range( 3,1): a += 1
a = 1
a = 1
for k in range( 1,3,-1): a += 1
a = 1
a = 1
for k in range( 3,0,-1): a += 1
a = 4
Задачи
«3»: Ипполит задумал трёхзначное число, которое при делении на 15 даёт в остатке 11, а при делении на 11 даёт в остатке 9. Найдите все такие числа.
«4»: Вводится натуральное число N. Программа должна найти факториал (обозначается как N!) – произведение всех натуральных чисел от 1 до N. Например, 5! = 1 · 2 · 3 · 4 · 5 = 120.
Пример:
Введите число:
5
5!=120.
Задачи
«5»: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 13 + 53 + 33. Найдите все трёхзначные числа Армстронга.
Массивы (списки)
Что такое массив?
Массив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и имеющих общее имя. Каждая ячейка в массиве имеет уникальный номер (индекс).
Надо:
Как ввести 10000 переменных?
?
- выделять память
- записывать данные в нужную ячейку
- читать данные из ячейки
Что такое массив?
5 | 10 | 15 | 20 | 25 |
0 | 1 | 2 | 3 | 4 |
A
массив
2
15
НОМЕР элемента массива
(ИНДЕКС)
A[0]
A[1]
A[2]
A[3]
A[4]
ЗНАЧЕНИЕ элемента массива
A[2]
НОМЕР (ИНДЕКС) элемента массива: 2
ЗНАЧЕНИЕ элемента массива: 15
Массив = таблица!
!
Массивы в 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 = 10
A = [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!):
i
i
Как заполнить, начиная с 1?
?
Как заполнить квадратами чисел?
?
Заполнение случайными числами
from random import randint
N = 10 # размер массива
A = [0]*N # выделить память
for i in range(N):
A[i] = randint(20,100)
В краткой форме:
from random import randint
N = 10
A = [ 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 10
10 9 10 6 8 5 9 6 10 9
«4»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов случайными числами в диапазоне между a и b (a может быть больше b).
Пример:
Введите границы диапазона:
10 5
10 9 10 6 8 5 9 6 10 9
Задачи
«5»: Ввести два натуральных числа a и b и заполнить массив из 10 элементов: первая половина массива заполняется случайными числами в диапазоне между
a и b (a может быть больше b), а вторая половина массива содержит их квадраты в том же порядке.
Пример:
Введите границы диапазона:
10 5
5 8 7 10 6 25 64 49 100 36
Создание массива:
N = 10
A = [0]*N
for 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 = 5
A = [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 = 0
while 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:
... # сделать что-то с x
for i in range(N):
A[i] += 1
x = 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
# 27
A[2] = A[1]*A[4]
print( 2*A[1]+A[2] )
# 18
# 24
for k in range(6):
A[k] += 2
print( 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 = 0
for x in A:
if x % 2 == 0:
summa += x
print ( summa )
B = [x for x in A
if x % 2 == 0]
print ( sum(B) )
или так:
Задача. Найти сумму чётных элементов массива.
Как определить, что элемент чётный?
?
сумма массива B
Как работает цикл?
summa = 0
for x in A:
if x % 2 == 0:
summa += x
4 | 3 | 6 | 8 | 1 |