Сумма элементов матрицы
Задача.
Напишите программу, которая вычисляет сумму элементов матрицы.
Входные данные
В первой строке записаны через пробел размеры матрицы:
количество строк N и количество столбцов M (1 В следующих N строках записаны строки матрицы,
в каждой – по M натуральных чисел, разделённых пробелами.
Выходные данные
Программа должна вывести одно число – сумму элементов матрицы.
Примеры
входные данные
4 5
1 2 3 4 5
6 12 8 9 10
11 12 12 14 15
16 17 18 12 20
Вот код решения этой задачи:
N, M = map (int, input ().split ()) S = 0 # S - сумма элементов матрицы # i - номер строки for i in range (N) : T = input ().split () for t in T : S += int (t) print (S)
Тестирующая система с автоматической проверкой принимает этот код, считает его безошибочным.
Но у меня возник вопрос.
Переменная M в первой строчке кода вводится, но ниже в программу нигде не применяется.
Код работает не только для прямоугольных (квадратных) матриц, а и для любых типа
0 0 0 0
1
2 3
9 9 9 9 9 9
с переменным числом элементов в строке матрицы.
Не могу понять вот что:
как вводить в одну строку ровно M значений?
Как посчитать сумму чисел в матрице?
но это если матрица как двумерный массив (даже если пустой), если матрица будет просто списком, будет ошибка. Как сделать более грамотно, может сейчас опытные питонисты подскажут.
longclaps,
как убрать лишние скобки в выводе?
как перенести каждую строку матрицы с новой строки в выводе?
у меня немного не красиво:
with open('in.txt') as f: matrix = [list(map(int, row.split())) for row in f.readlines()] print(matrix) print(sum(map(sum, matrix)))
from pprint import pprint pprint([[1, 0, 0], [0, 1, 0], [0, 0, 1]], width=20)
вот такой цикл удовлетворяет моему запросу красоты:
#print(*matrix) это лишнее, гораздо красивее отображение, см цикл ниже for i in matrix: for j in i: print(j,end=' ') print()
при этом матрица отобразится, точно как в файле
with open(‘in.txt’) as f:
matrix = [list(map(int, row.split())) for row in f.readlines()]
print(matrix)
for m in matrix:
s = sum(m)
print(s)
s = 0 for m in matrix: s += sum(m)
Denis_Yav ваше суммирование дает результат 4,
не плюсуется последняя третья строка матрицы
kova1ev ваше суммирование дает результат 8 — это верно!
вывод марицы на экран
print(matrix)
дает такой результат:как сделать, чтоб матица была записана не в одну строку, а чтоб переносилась после каждых нескольких элементов на новую строку, как это записано в файле?
и как сделать. чтоб не высвечивались скобки у выведенной матрицы?
with open('in.txt') as f: matrix = [list(map(int, row.split())) for row in f.readlines()] s = 0 for m in matrix: s += sum(m) print(s) print(matrix)
Сумма элементов матрицы
Напишите программу, которая вычисляет сумму элементов матрицы.
В первой строке записаны через пробел размеры матрицы: количество строк N и количество столбцов M ( 1 ≤ N , M ≤ 100 ). В следующих N строках записаны строки матрицы, в каждой – по M натуральных чисел, разделённых пробелами.
Программа должна вывести одно число – сумму элементов матрицы.
4 5
1 2 3 4 5
6 12 8 9 10
11 12 12 14 15
16 17 18 12 20
Сумма элементов матрицы
Задача. Напишите программу, которая вычисляет сумму элементов матрицы. Входные данные В.
Сумма элементов матрицы в блоках
Прочитать действительную А матрицу размером n x n. Для заданного m, такого, что n%m = 0, найти.
Сумма и количество положительных элементов матрицы
Неправильно считает сумму и количество положительных элементов матрицы( import numpy as np .
n = int(input()) m = int(input()) s = 0 for i in range(n * m): m = int(input()) s = s + m print(s)
Сообщение от Xiliatey
Traceback (most recent call last):
File «C:\Users\дом\Desktop\python\test.py», line 1, in
n = int(input())
ValueError: invalid literal for int() with base 10: ‘4 5’
>>>
ошибку переведете?
а затем что так условием задано. а если матрица будет 10000 Х 10000 вы так и будете 10000 цифр вводить ручками?
Добавлено через 10 минут
n,m = [int(i) for i in input().split()] sum_ = 0 for _ in range(n): line = input().split() for i in range(m): sum_ += int(line[i]) print(sum_)
n,m = map(int,input().split()) print(sum(sum(map(int,input().split())) for _ in range(n)))
n,m = [int(i) for i in input().split()] sum_ = 0 for _ in range(n): line = input().split() for i in range(m): sum_ += int(line[i]) print(sum_)
пользователь при вводе строки матрицы может ввести меньше, чем m чисел
n,m = map(int,input().split()) print(sum(sum(map(int,input().split())) for _ in range(n)))
переменная m после её ввода нигде не применяется.
Получается, что можно вводить матрицы с разными длинами строк.
Я не понимаю, как можно вводить именно m значений в строку матрицы, типа
list> = map (int, input (). split ())
Сообщение от Michael Myers66
В следующих N строках записаны строки матрицы, в каждой – по M натуральных чисел, разделённых пробелами.
N, M = map (int, input ().split ()) S = 0 for i in range (N) : T = input ().split () for t in T : S += int (t) print (S)
Сообщение от MSP_cyber
Вот именно! В питоне, как и в ряде других языков, это бессмысленно.
Просто такие задачи даются не под конкретный язык.
Например, в СИ это нужно. А тут нет. Вот и все! Поэтому m считывается «лишь бы куда-нибудь», ведь она дается во входящих данных.
ВОТ РЕШЕНИЕ КОМУ НУЖНО
n, m = list(map(int, input().split())) s = 0 for i in range(n): a = list(map(int,input().split())) s += sum(a) print(s)
если накосячил, пишите
Добавлено через 1 минуту
я решил, попробуй сдать)
iSmokeJC,
Спасибо огромное, замечательно точно сказано!
Добавлено через 37 минут
z0nGG,
очень красивое решение,
но опять же, хочу подчеркнуть, а при чем здесь m?
зачем мы его вводили?
Сообщение от MSP_cyber
Специально для вас, раз вам так сильно хочется её использовать. Будем считать, что тестирующая система коварна и может подать больше чем m чисел и сделаем так:
n, m = list(map(int, input().split())) s = 0 for i in range(n): a = list(map(int, input().split()))[:m] s += sum(a) print(s)
Эти контесты не сделаны онли для питона, т.к тогда она была бы разной для питона и для СИ.
Поэтому составители этой задачи не стали заморачиваться и просто добавили m.
Сообщение от MSP_cyber
Сообщение от MSP_cyber
Сообщение от iSmokeJC
Сообщение от MSP_cyber
а может и больше но тогда это будет совсем другая матрица и сумма чисел будет совсем другой то есть не досчитаем потому что чисел в строке будет больше чем m но код ошибок при этом не выдаст. есть конкретные входные данные под которые и требуется написать решение.
Сумма элементов матрицы, расположенных в области, определяемой индексами
Дана действительная матрица i, i = 1, . n. Получить действительную матрицу i, i = 1, . n.
Сумма и число положительных элементов матрицы над диагональю
Вычислить сумму и число положительных элементов матрицы, находящихся над главной диагональю.
Сумма четных элементов на главной диагонали квадратной матрицы
Задание: Напишите функцию, которая находит сумму четных элементов на главной диагонали квадратной.
Вывод на экран строки матрицы, сумма элементов которой наибольшая
Напишите программу, которая заполняет квадратную матрицу 5 на 5 элементов случайными целыми числами.
Выяснить является ли сумма элементов матрицы, расположенных над нулями, четным числом.
Помогите с решением. Дана матрица. Выяснить является ли сумма элементов, расположенных над нулями.
Python Урок 8. Матрицы (двумерный массив)
Для работы с матрицами в Python также используются списки. Каждый элемент списка-матрицы содержит вложенный список.
Рассмотрим пример матрицы размера 4 х 3:
matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
Данный оператор можно записать в одну строку:
matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
matrix = [[-1, 0, 1], [-1, 0, 1], [0, 1, -1], [1, 1, -1]]
def printMatrix ( matrix ): for i in range ( len(matrix) ): for j in range ( len(matrix[i]) ): print ( "".format(matrix[i][j]), end = "" ) print ()
def printMatrix ( matrix ): for i in range ( len(matrix) ): for j in range ( len(matrix[i]) ): print ( «».format(matrix[i][j]), end = «» ) print ()
В примере i – это номер строки, а j – номер столбца;
len(matrix) – число строк в матрице.
def printMatrix ( matrix ): for row in matrix: for x in row: print ( "".format(x), end = "" ) print ()
def printMatrix ( matrix ): for row in matrix: for x in row: print ( «».format(x), end = «» ) print ()
from random import randint n, m = 3, 3 a = [[randint(1, 10) for j in range(m)] for i in range(n)] print(a)
from random import randint n, m = 3, 3 a = [[randint(1, 10) for j in range(m)] for i in range(n)] print(a)
Обработка элементов двумерного массива
Нумерация элементов двумерного массива, как и элементов одномерного массива, начинается с нуля.
Т.е. matrix[2][3] — это элемент третьей строки четвертого столбца.
p = 1 for i in range(N): for j in range(M): p *= matrix[i][j] print (p)
p = 1 for i in range(N): for j in range(M): p *= matrix[i][j] print (p)
s = 0 for row in matrix: s += sum(row) print (s)
s = 0 for row in matrix: s += sum(row) print (s)
Для поиска суммы существует стандартная функция sum.
Задание Python 8_0:
Получены значения температуры воздуха за 4 дня с трех метеостанций, расположенных в разных регионах страны:
Номер станции | 1-й день | 2-й день | 3-й день | 4-й день |
---|---|---|---|---|
1 | -8 | -14 | -19 | -18 |
2 | 25 | 28 | 26 | 20 |
3 | 11 | 18 | 20 | 25 |
Т.е. запись показаний в двумерном массиве выглядела бы так:
- Распечатать температуру на 2-й метеостанции за 4-й день и на 3-й метеостанции за 1-й день.
- Распечатать показания термометров всех метеостанций за 2-й день.
- Определить среднюю температуру на 3-й метеостанции.
- Распечатать, в какие дни и на каких метеостанциях температура была в диапазоне 24-26 градусов тепла.
Задание Python 8_1:
Написать программу поиска минимального и максимального элементов матрицы и их индексов.
Задание Python 8_2:
Написать программу, выводящую на экран строку матрицы, сумма элементов которой максимальна.
for i in range(N): # работаем с matrix[i][i]
for i in range(N): # работаем с matrix[i][i]
for i in range(N): # работаем с matrix[i][N-1-i]
for i in range(N): # работаем с matrix[i][N-1-i]
for i in range(N): c = A[i][2] A[i][2] = A[i][4] A[i][4] = c
for i in range(N): c = A[i][2] A[i][2] = A[i][4] A[i][4] = c
for i in range(N): A[i][2], A[i][4] = A[i][4], A[i][2]
for i in range(N): A[i][2], A[i][4] = A[i][4], A[i][2]
Задание Python 8_3:
Составить программу, позволяющую с помощью датчика случайных чисел сформировать матрицу размерностью N. Определить: