пятница, 11 сентября 2020 г.

Язык – средство кодирования

среда, 13 мая 2020 г.

Применение вложенных циклов

Применение вложенных циклов

Перед выполнением заданий, ознакомьтесь с примерами и ответьте на вопросы для самопроверки

Примеры

  • вывод таблицы умножения
In [5]:
1	2	3	4	5	6	7	8	9	
2	4	6	8	10	12	14	16	18	
3	6	9	12	15	18	21	24	27	
4	8	12	16	20	24	28	32	36	
5	10	15	20	25	30	35	40	45	
6	12	18	24	30	36	42	48	54	
7	14	21	28	35	42	49	56	63	
8	16	24	32	40	48	56	64	72	
9	18	27	36	45	54	63	72	81	
In [15]:
1	2	3	4	5	6	7	8	9	
2	4	6	8	10	12	14	16		
3	6	9	12	15	18	21			
4	8	12	16	20	24				
5	10	15	20	25					
6	12	18	24						
7	14	21							
8	16								
9									
  • Найти все целые числа из промежутка от 100 до 300, у которых сумма делителей равна 50.
In [23]:
141

Вопросы для самопроверки

  • В каких случаях используются вложенные операторы цикла?
  • Как оформляются вложенные операторы цикла с параметром? Как они работают (что происходит при их выполнении)?
  • Внешний цикл образован оператором цикла с параметром i, меняющимся от 1 до 5, внутренний — с параметром j, меняющимся от 3 до 7. Опишите последовательность изменения значений i и j.
  • Вложенный цикл образован двумя операторами цикла с параметром. Можно ли во внешнем и внутреннем циклах использовать один и тот же параметр цикла?
  • Внешний цикл образован оператором цикла с параметром. Можно ли в качестве внутреннего цикла использовать оператор цикла с условием?
  • Внешний цикл образован оператором цикла с условием. Можно ли в качестве внутреннего цикла использовать оператор цикла с параметром?
  • Сколько раз выполнится тело внутреннего цикла, если во внешнем цикле параметр цикла меняется от 1 до 4, во внутреннем — от 1 до 3?

Задания

  1. Напечатать числа в виде следующей таблицы:
    11
    2122
    313233
    41424344
  2. Найти все целые числа из промежутка от 300 до 600, у которых сумма делителей кратна 10.

вторник, 28 апреля 2020 г.

Массивы

Массивы

Классический массив:

это упорядоченная группа однотипных данных, определенного размера (количества элементов) и имеющих общее имя.
Особенности:
  • отпадает необхожимость именования каждого элемента данных (у всех одно имя, например - X)
  • каждый элемент имеет уникальный номер/индекс: X[5] - 5-й элемент в X
  • расположенных в памяти рядом (в соседних ячейках)
  • для компьютера - прямой, быстрый, доступ к элементам. Например, для X[5]:
    <адрес в памяти> = <адрес начала X> + <размер типа> × <номер (5)>
Недостатки:
  • выделение в памяти, заранее определенного, пространства для хранения своих элементов:
    • нельзя увелечить (а может понадобиться больше)
    • нельзя уменьшит (а может понадобиться меньше - неэффективно)
  • все элементы массива должны быть одного типа

Массив = таблица

Для X = [9,11,25,34,41,52]
012345
значение:91125344152

Списки в Python

  • упорядоченная группа, изменяемого размера, любых объектов и имеющих общее имя.
Списки позволяют избавиться от перечисленных недостатков массивов. Приобретается только один : теряется прямой доступ в памяти - медленней!

Создание списков:

In [77]:
# Пустых:
X = []
A = list()
print(X,A)
[] []
In [78]:
# Перечислением элементов:
X = [1, 2, 3]
A = [1,2] + [3,4]
print(X,A)
[1, 2, 3] [1, 2, 3, 4]
In [30]:
# Из других списков:
X = [1, 2, 3]
A = X + [X[2]] + X[:2] + X[2:] + X[::2]
# [2] - один элемент, но каждый должен быть списком => [X[2]] 
print(X,A)
[1, 2, 3] [1, 2, 3, 3, 1, 2, 3, 1, 3]
In [33]:
# Повторением:
X = [1, 2, 3]
A = X * 2
Y = [0] * 5
print(A, Y)
[1, 2, 3, 1, 2, 3] [0, 0, 0, 0, 0]
In [80]:
# Из арифметичекой прогрессии:
X = list( range(10) )
A = list( range(10, 20) )
Y = list( range(10, 21, 2) )
print(X, A, Y, sep='\n')
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[10, 12, 14, 16, 18, 20]
In [51]:
# С помощью генератора списка:
X = [ i for i in range(10) ]
A = [ i*i for i in range(10) ]
Y = [ i*i for i in range(10) if i%3 == 0 ]
from random import randint
Z = [ randint(10,100)  for i in range(10) ]
print(X, A, Y, Z, sep='\n')
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[0, 9, 36, 81]
[74, 96, 11, 15, 29, 15, 33, 32, 97, 23]

Вставка элементов

In [60]:
A = []
X = [1, 2, 3]
# Добавление одного элемента:
X.insert(2,5)  # по индексу 2 - добавить 5
A.append(X[2]) # добавить в конец
# Расширение элементами:
A.extend(X[:2])
print(X, A)
[1, 2, 5, 3] [5, 1, 2]

Удаление элементов

In [61]:
X.pop() # удалить последний
print(X)
[1, 2, 5]
In [62]:
X.pop(0) # удалить первый
print(X)
[2, 5]
In [65]:
A = [ 2, 3, 4, 3 ]
A.remove(3) # Удалить первый со значением 3
print(A)
[2, 4, 3]

Ввод и вывод

In [81]:
X = [
    int(
        input(
            f'X[{i}] = '
            )
    )
    for i in 
            range(
                int( 
                    input(
                        'Введите количество элементов:'
                    ) 
                )
            )
]
print( X )
print( *X )
print( *X , sep='\n')
Введите количество элементов:5
X[0] = 2
X[1] = 4
X[2] = 3
X[3] = 5
X[4] = 4
[2, 4, 3, 5, 4]
2 4 3 5 4
2
4
3
5
4
In [82]:
X = list( map( int, input().split()) ) # ввод одной строкой
print( *X , sep=' : ')
4 7 5
4 : 7 : 5
In [75]:
X = map( int, input().split(' : ')) # ввод одной строкой
print( *X , sep=' ')
1 : 2 : 3
1 2 3

Подсчёт количества нужных элементов

Задача. В массиве записаны данные о росте баскетболистов. Сколько из них имеет рост больше 180 см, но меньше 190 см?
In [99]:
x = [randint(170,200) for __ in range(10)]
print(*x)
print( *[i for i in x if  180<i<190 ] )
200 181 180 181 189 199 174 172 179 179
181 181 189

Сумма

In [100]:
sum( [i for i in x if  180<i<190 ]  )
Out[100]:
551

Максимальный элемент

Найдите (за один проход) количество элементов, имеющих максимальное значение
In [108]:
x = [ randint( 10, 15 ) for __ in range(10) ]
print( *x )
m = -1
for i in range( len(x) ):
    if x[i] > m:
        m = x[i]
        k = 1
    elif x[i] == m:
        k += 1
print(k)
14 12 11 12 11 10 14 11 12 14
3

Задания

№1

Заполните массив случайными числами в интервале [0,100] и подсчитайте отдельно среднее значение всех элементов, которые
Пример:
Массив: 3 2 52 4 60
Ср. арифм. элементов [0,50): 3.000
Ср. арифм. элементов [50,100]: 56.000

№2

Заполните массив случайными числами. Определить, есть ли в нем элементы с одинаковыми значениями, не обязательно стоящие рядом.
Пример:
Массив: 3 2 1 3 2 5
Есть: 3, 2
Пример: Массив: 3 2 1 4 0 5
Нет

№3

Заполнить массив случайными числами и найти минимальный и максимальный элементы массива и их номера.
Пример:
Массив: 1 2 3 4 5
Минимальный элемент: A[1]=1
Максимальный элемент: A[5]=5

AI