пятница, 11 сентября 2020 г.
среда, 13 мая 2020 г.
Применение вложенных циклов
In [5]:
1
for row in range(1,10):
2
for col in range(1,10):
3
print(row*col, end='\t')
4
print()
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
for row in range(1,10):
2
for col in range(1,10):
3
if col>10-row: print( '', end='\t')
4
else: print( row*col, end='\t')
5
print('')
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]:
1
for i in range(100,300):
2
j = 2
3
S = 0
4
while j*j < i:
5
if i % j == 0: S = S + j + i//j
6
j = j + 1
7
if j*j == i: S = S + j
8
if S == 50: print( i )
141
Вопросы для самопроверки
- В каких случаях используются вложенные операторы цикла?
- Как оформляются вложенные операторы цикла с параметром? Как они работают (что происходит при их выполнении)?
- Внешний цикл образован оператором цикла с параметром i, меняющимся от 1 до 5, внутренний — с параметром j, меняющимся от 3 до 7. Опишите последовательность изменения значений i и j.
- Вложенный цикл образован двумя операторами цикла с параметром. Можно ли во внешнем и внутреннем циклах использовать один и тот же параметр цикла?
- Внешний цикл образован оператором цикла с параметром. Можно ли в качестве внутреннего цикла использовать оператор цикла с условием?
- Внешний цикл образован оператором цикла с условием. Можно ли в качестве внутреннего цикла использовать оператор цикла с параметром?
- Сколько раз выполнится тело внутреннего цикла, если во внешнем цикле параметр цикла меняется от 1 до 4, во внутреннем — от 1 до 3?
вторник, 28 апреля 2020 г.
Массивы
Массивы
Классический массив:
это упорядоченная группа однотипных данных, определенного размера (количества элементов) и имеющих общее имя.
Особенности:
- отпадает необхожимость именования каждого элемента данных (у всех одно имя, например - X)
- каждый элемент имеет уникальный номер/индекс: X[5] - 5-й элемент в X
- расположенных в памяти рядом (в соседних ячейках)
- для компьютера - прямой, быстрый, доступ к элементам. Например, для X[5]:
<адрес в памяти> = <адрес начала X> + <размер типа> × <номер (5)>
Недостатки:
- выделение в памяти, заранее определенного, пространства для хранения своих элементов:
- нельзя увелечить (а может понадобиться больше)
- нельзя уменьшит (а может понадобиться меньше - неэффективно)
- все элементы массива должны быть одного типа
Массив = таблица
№ | 0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|---|
значение: | 9 | 11 | 25 | 34 | 41 | 52 |
Списки в 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
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
Подписаться на:
Сообщения (Atom)
-
Решения задач школьного этапа Всероссийской олимпиады школьников по информатике (9-11 классы) Московская область, 21-22 октября 2019 ...
-
Программирование разветвляющихся алгоритмов Неполное (сокращенное) ветвление Задача 1 Сколько k автомобилей понадобиться, чтобы...