Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 29, 2014 21:51:56

HelloWorld
Зарегистрирован: 2014-12-29
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

С наступающим Новым Годом, уважаемые форумчане! Помогите, пожалуйста, перевести с Паскаля на Питон
Вот задача:
Написать программу, которая квадратной матрице (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.

Офлайн

#2 Дек. 29, 2014 22:21:26

Alen
Зарегистрирован: 2013-08-01
Сообщения: 373
Репутация: +  49  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

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)

Офлайн

#3 Дек. 29, 2014 22:46:51

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

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 а что если все диагональные элементы равны нулю? у Вас выдаст одникавый результат если все элементы равны нулю и если все элементы равны еденице!



————————————————
-*- Simple is better than complex -*-

Офлайн

#4 Дек. 30, 2014 01:10:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9895
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

HelloWorld
произведение ненулевых диагональных элементов
У матрицы две диагонали.



Офлайн

#5 Дек. 30, 2014 01:26:13

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

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)



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Дек. 30, 2014 01:26:40)

Офлайн

#6 Дек. 30, 2014 02:46:15

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9895
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

terabayt
то средний учитывать два раза?!
Зачем? Достаточно его исключить из побочной.

terabayt
и, хоть я и не зная паскаль, но мне кажется, что там только одна диагональ.
Не, матрица - это математическое понятие. Там есть главная и побочная диагональ. А то, что у него на Паскале, - это точно так же неправильно написано на Паскале, как это можно неправильно написать на Питоне.



Отредактировано py.user.next (Дек. 30, 2014 02:47:13)

Офлайн

#7 Дек. 30, 2014 04:16:58

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

вот, к примеру
“Единичной матрицей называется диагональная матрица, диагональные элементы которой равны 1.”
“Диагональные элементы матрицы (т.е. элементы, стоящие на главной диагонали)”
и везде в интернете под диагональными элементами подразумеваются элементы главной диагонали!



————————————————
-*- Simple is better than complex -*-

Офлайн

#8 Дек. 30, 2014 08:39:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9895
Репутация: +  854  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

http://math1.ru/education/matrix/matrix.html

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

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

Ну, там тоже подразумевают, что если не говорится главные это или побочные, то считается, что это главные.



Офлайн

#9 Дек. 30, 2014 09:27:49

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

py.user.next
подразумевают, что если не говорится главные это или побочные, то считается, что это главные.
ну значит нужно найти произведение только одной диагонали?!



————————————————
-*- Simple is better than complex -*-

Офлайн

#10 Дек. 30, 2014 19:00:49

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Помогите перевести с Паскаля на Питон, пожалуйста!

.



Отредактировано Isem (Янв. 6, 2015 06:46:02)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version