В прямоугольной таблице B(5;7), значения которой заданы генератором случайных чисел в интервале от 0 до 150, найти: А) сумму значений элементов третьей строки. Б) произведение элементов, значение которых меньше 10. В) подсчитать количество элементов, значение которых больше 100. '''
from functools import reduce # применение функции к списку from operator import mul # операция умножения from pprint import pprint # формат. вывод from random import randint # случайные целые числа в промежутке
b = [[randint(0, 151) for _ in range(5)] for _ in range(7)] print('Массив:') pprint(b)
# Сумма элементов 3 строки sum_3rd_row = sum(b[2])
# Произведение эл-тов < 10 rows_lt_10 = [list(filter(lambda x: x < 10, row)) for row in b] rows_lt_10_mults = [reduce(mul, row) for row in rows_lt_10 if row] product_lt_10 = reduce(mul, rows_lt_10_mults)
# Количество эл-тов > 100 rows_gt_100 = [list(filter(lambda x: x > 100, row)) for row in b] rows_gt_100_lens = [len(row) for row in rows_gt_100] count_gt_100 = sum(rows_gt_100_lens)
print('Сумма элементов 3 строки:', sum_3rd_row) print('Произведение элементов < 10:', product_lt_10) print('Количество элементов > 100:', count_gt_100)
Чтобы число получилось максимальным, нужно поменять самое большое вычитаемое число и самое маленькое прибавляемое. То есть 2015 и 2.
Сначала легче посчитать исходное значение выражение.
Если разбить выражение на пары (2016-2015) + (2014-2013) ... То можно заметить, что значение каждой скобки равно 1. Таких пар будет 2016 : 2 = 1008 1008*1 = 1008
В двух парах, а именно (2016-2015) и (2-1) произойдут изменения. Уберём их из общего выражения на время. Без этих 4-х чисел значение выражения равно 1006.
2016−2015+2014−2013+…+2−1 = 1006 + (2016 - 2015) + (2 - 1) Теперь поменяем местами 2015 и 2, найдём значение выражения:
Python 3.X
В прямоугольной таблице B(5;7), значения которой заданы
генератором случайных чисел в интервале от 0 до 150, найти:
А) сумму значений элементов третьей строки.
Б) произведение элементов, значение которых меньше 10.
В) подсчитать количество элементов, значение которых больше 100.
'''
from functools import reduce # применение функции к списку
from operator import mul # операция умножения
from pprint import pprint # формат. вывод
from random import randint # случайные целые числа в промежутке
b = [[randint(0, 151) for _ in range(5)] for _ in range(7)]
print('Массив:')
pprint(b)
# Сумма элементов 3 строки
sum_3rd_row = sum(b[2])
# Произведение эл-тов < 10
rows_lt_10 = [list(filter(lambda x: x < 10, row)) for row in b]
rows_lt_10_mults = [reduce(mul, row) for row in rows_lt_10 if row]
product_lt_10 = reduce(mul, rows_lt_10_mults)
# Количество эл-тов > 100
rows_gt_100 = [list(filter(lambda x: x > 100, row)) for row in b]
rows_gt_100_lens = [len(row) for row in rows_gt_100]
count_gt_100 = sum(rows_gt_100_lens)
print('Сумма элементов 3 строки:', sum_3rd_row)
print('Произведение элементов < 10:', product_lt_10)
print('Количество элементов > 100:', count_gt_100)
Сначала легче посчитать исходное значение выражение.
Если разбить выражение на пары (2016-2015) + (2014-2013) ... То можно заметить, что значение каждой скобки равно 1.
Таких пар будет 2016 : 2 = 1008
1008*1 = 1008
В двух парах, а именно (2016-2015) и (2-1) произойдут изменения. Уберём их из общего выражения на время. Без этих 4-х чисел значение выражения равно 1006.
2016−2015+2014−2013+…+2−1 = 1006 + (2016 - 2015) + (2 - 1)
Теперь поменяем местами 2015 и 2, найдём значение выражения:
1006 + (2016 - 2) + (2015 - 1) = 1006 + 2014 + 2014 = 5034