На уроке 7.11 и 14.11, 15.11, 21.11

  • Массив. Создание массива. Обращение к элементу массива по индексу (параграф 21, стр. 73):
  • Перебор элементов массива. Генераторы. (параграф 21)
  • Практические задания №20 к учебнику «Информатика, 8 класс» К.Ю. Поляков, Е.А. Еремин:
    • Уровень А — на «4»
    • Уровень B, C — на оценку «5»
  • Ввод/Вывод массива
  • Заполнение массива случайными числами
  • Практическое задание №21
    • Уровень А — на «4»,
    • Уровень B,C,D — на «5»
1. Разбор задачи
Какой оператор надо поместить в тело цикла вместо многоточия, чтобы массив (список) заполнился такими значениями: С =[0, 3, 6, 10, 13, 16]?

C = [0]*6
for k in range(6):
    ........

а) C[k] = 4 * k - k % 3
б) C[k] = 4 * k + k % 3
в) C[k] = 3*k + k // 3

Тест

  1. https://forms.gle/VE8A2yHRKYToVCaZ7

2. https://forms.gle/h2Cu7FT79MziRJti8

Методы и заполнение массива:

  • перечисление: A = [1, 23, 14, 0, 5]
  • на основе другого/других массивов:
    • умножение A = [0] * 6
    • сложение A =[‘И’]*3+’ГРА’*2;
  • срез B = A[1:4] (это [23, 14, 0])
  • добавление (append) к пустому: A = [], A.append(1), A.append(23)
  • генераторы:
    • A = [i for i in range(5)] ,
    • A = [i for i in range(100) if i % 7 == 0]
  • из последовательностей: A = list(range (6)), A = list(‘ABCD’)
  • функции
    • A = ‘Мо-ло-ко’.split(‘-‘)
    • B = copy.copy(A) # import copy
    • B = copy.deepcopy(A
  • заполнение в цикле
for i in range(N):
    A[i] = i

Обработка массива

А = list (‘АБВГД’)

  • Обращение по индексу :
    • нумерация с начала A[2]
    • нумерация с конца A [-2]
    • ошибка выхода за границу (IndexError: list index out of range)
  • Тип массива (type(A))
  • Размер массива (len(A))
  • Поиск суммы / произведения/количества / максимума
  • Изменение массива
for i in range(N):
    A[i] = i

Вывод массива

  • print (A) # [1, 2, 3, 4, 5]
  • print( *A ) # 1, 2, 3, 4, 5
  • поэлементно:
for i in range(len(A)):  # в столбик
print(A[i])

for elem in A: # в строчку
print(elem, end=" ")

Ввод массива с клавиатуры

  • Цикл ввода
N = int(input())
for i in range(N):
    A[i] = int(input())
  • Генератор списка: А = [ int(input()) for i in range(N) ]

Практическая работа №20. Заполнение массивов

Во всех задания программа должна вывести содержимое массива после его заполнения/изменения.

  • Уровень А — на «4»
  • Уровень B, C — на оценку «5»

Ввод данных в одной строке (2 варианта)
1) s1, s2 = input().split() 
num1, num2 = int(s1), int(s2)
2) arr = input().split()
num1, num2 = int(arr[0], int(arr[1]))
3) num1, num2 = map (int, input().split())

Уровень A.

а) Заполните все элементы массива длины 20 числовым/строковым значением X , введённым с клавиатуры.
б) Напишите программу, которая заполняет массив из элементов последовательными натуральными числами, начиная с , и выводит его. Входная строка содержит два целых числа: начальное значение X и размер массива N , разделённые пробелом. Программа должна вывести содержимое массива: последовательных натуральных чисел, начиная с X через пробел.№112270.

входные данные
4 5 
выходные данные
4 5 6 7 8

Уровень B.

а) Напишите программу, которая заполняет массив из N элементов в обратном порядке последовательными натуральными числами, начиная с последнего элемента, который должен быть равен X . Входная строка содержит два целых числа: начальное значение и размер массива , разделённые пробелом. Программа должна вывести содержимое массива: убывающую последовательность из последовательных натуральных чисел, разделенных пробелом; последний элемент должен быть равен . (Задача №112273. В обратном порядке, начиная с X)

входные данные
6 4 
выходные данные
9 8 7 6


б) Напишите программу, которая заполняет массив из элементов степенями числа 2 (от 1, 2**1 до 2**N), так чтобы элемент с индексом i был равен 2**i. Входная строка содержит размер массива N. Программа должна вывести содержимое массива: первых степеней числа 2  через пробел.

входные данные
5 
выходные данные
1 2 4 8 16

Уровень C.

а) Заполните массив степенями числа 2, начиная с конца, так чтобы последний элемент массива был равен 1, а каждый предыдущий был в 2 раза больше следующего. Входная строка содержит размер массива N. Программа должна вывести содержимое массива: первых степеней числа 2 в обратном порядке через пробел. (Задача №112275. Степени двойки)

входные данные
5
выходные данные
32 16 8 4 2


б) С клавиатуры вводится целое число X. Заполните массив, состоящий из нечётного числа элементов, целыми числами, так чтобы средний элемент массива был равен X, слева от него элементы стояли по возрастанию, а справа – по убыванию. Соседние элементы отличаются на единицу. Например, при X = 3 массив из 5 элементов заполняется так: 1 2 3 2 1.

Практическая работа №21. Перебор элементов массивов

Уровень А — на «4», уровень B,C,D — на «5»

Уровень A.

Введите с клавиатуры значения элементов массива, увеличьте каждый элемент в 2 раза и выведите полученный массив на экран.

Уровень B.

Введите с клавиатуры значения элементов массива и увеличьте на 5 значения всех элементов массива, кроме первого и последнего и выведите полученный массив на экран.

Уровень C.

В массиве чётное число элементов. Введите с клавиатуры значения элементов массива, и выполните две операции:
а) увеличьте на единицу значения всех элементов в первой половине массива;
б) увеличьте в 2 раза значения всех элементов во второй половине массива.

Выведите полученный массив на экран.

Уровень D.

Введите с клавиатуры значения элементов массива и найдите их среднее арифметическое. Выведите полученный массив на экран.

Рекомендации по выполнению Практической работы №21
Вариант 1 (более простой):  

1) с клавиатуры пользователь должен ввести количество элементов = N 
2) в программе создать массив из N элементов заполненных чем-то (например, 0).
3) в цикле for пользователь вводит N шт целых чисел (каждое с новой строки). Каждый элемент сохраняется в соответствующем элементе массива (от 0 до N-1).
4) в цикле выполнить изменение элементов массива в соответствии с описанием задания выбранного уровня.
5) вывести измененный массив.

Вариант 2 (более сложный)
Заранее неизвестно, сколько чисел введет пользователь:
1) в программе создать массив пустой массив.
2) в цикле while пользователь вводит целые числа, чтобы завершить ввод он вводит число 0.
3)  каждый новый введенный элемент добавляется в массив (список), можно использовать append() или конкатенацию ("+"). Завершающий 0 добавлять в массив не нужно!
4) в цикле  for выполнить изменение элементов массива в соответствии с описанием задания выбранного уровня.
5) вывести измененный массив.

Материал для самостоятельного изучения:

Параграф 21 «Массивы» из учебника «Информатика, 8 класс» К.Ю. Поляков, Е.А. Еремин http://kpolyakov.spb.ru/download/8-3_python.pdf

Читайте также:

комментария 2

  1. 26.11.2019

    […] 3. Выполнить и сдать Практические работы 20 и 21. […]

  2. 27.11.2019

    […] 3. Выполнить и сдать Практические работы 20 и 21. […]