Найти - Пользователи
Полная версия: Помогите перевести с Паскаля на Питон, пожалуйста!
Начало » Центр помощи » Помогите перевести с Паскаля на Питон, пожалуйста!
1 2
HelloWorld
С наступающим Новым Годом, уважаемые форумчане! Помогите, пожалуйста, перевести с Паскаля на Питон
Вот задача:
Написать программу, которая квадратной матрице (10х10) находит произведение ненулевых диагональных элементов.
Моё решение на Паскале:
program abc;
var
a: array of longint;
i, j: byte;
mult: longint;
begin
randomize;
for i:=1 to 10 do begin
for j:=1 to 10 do begin
a := random(5);
write(a:4);
end;
writeln;
end;
mult := 1;
for i:=1 to 10 do
if a <> 0 then
mult := mult * a;
for i:=1 to 10 do
if (a <> 0) and (i <> 10-i+1) then
mult := mult * a;
writeln(mult);
readln;
end.
Alen
from random import randint
matrix = [[randint(0, 10) for y in range(10)] for x in range(10)]
m =1
for i in range(10):
    if matrix[i][i]:
        m *= matrix[i][i]
print(m)
terabayt
from random import randint
matrix = [[randint(0, 10) for y in range(10)] for x in range(10)]
m = [matrix[i][i] for i in range(10) if matrix[i][i]]
m = reduce(lambda x, y: x*y, m) if m else 0
print(m)
Alen а что если все диагональные элементы равны нулю? у Вас выдаст одникавый результат если все элементы равны нулю и если все элементы равны еденице!
py.user.next
HelloWorld
произведение ненулевых диагональных элементов
У матрицы две диагонали.
terabayt
py.user.next
У матрицы две диагонали.
но не сказано брать две или одну, а если две, то средний учитывать два раза?!
и, хоть я и не зная паскаль, но мне кажется, что там только одна диагональ.
вот на две:
from random import randint
matrix = [[randint(0, 10) for y in range(10)] for x in range(10)]
m = [matrix[i][i] for i in range(-10, 10) if matrix[i][i]]
m = reduce(lambda x, y: x*y, m) if m else 0
print(m)
py.user.next
terabayt
то средний учитывать два раза?!
Зачем? Достаточно его исключить из побочной.

terabayt
и, хоть я и не зная паскаль, но мне кажется, что там только одна диагональ.
Не, матрица - это математическое понятие. Там есть главная и побочная диагональ. А то, что у него на Паскале, - это точно так же неправильно написано на Паскале, как это можно неправильно написать на Питоне.
terabayt
вот, к примеру
“Единичной матрицей называется диагональная матрица, диагональные элементы которой равны 1.”
“Диагональные элементы матрицы (т.е. элементы, стоящие на главной диагонали)”
и везде в интернете под диагональными элементами подразумеваются элементы главной диагонали!
py.user.next
http://math1.ru/education/matrix/matrix.html

Главные диагональные элементы, побочные диагональные элементы. Сумма главных диагональных элементов называется следом матрицы.

terabayt
и везде в интернете под диагональными элементами подразумеваются элементы главной диагонали!

Ну, там тоже подразумевают, что если не говорится главные это или побочные, то считается, что это главные.
terabayt
py.user.next
подразумевают, что если не говорится главные это или побочные, то считается, что это главные.
ну значит нужно найти произведение только одной диагонали?!
Isem
.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB