Форум сайта python.su
1. Оборачивайте код в тэги! Так будет легче и вам и тому кто захочет помочь.
2. Для расширенных вопросов лучше создавать новую тему. Так больше вероятность что вы получите быстрый и максимально удовлетворяющий требованиям ответ.
3. Теперь по сабжу. Если вы хотите менять элементы матрицы, и выводить ее без скобок, предоставьте, пожалуйста, пример матрицы, которую вам нужно изменить.
Офлайн
Recklessly.
Помогите пожалуйста с массивом!Задание: Определить номер первого столбца матрицы, в котором есть хотя бы один отрицательный элемент.Это нужно сделать через процедуры.
from random import randint
def init():
matr = []
for i in range(5):
matr.append([])
for j in range(5):
matr[i].append(randint(-1, 5))
return matr
def pr(matr):
tmp = ''
for i in range(5):
for j in range(5):
tmp += ' %01d' % matr[i][j]
print tmp
tmp = ''
def pr_(matr): # печатает в строках столбцы (для наглядности)
tmp = ''
for i in range(5):
for j in range(5):
tmp += ' %01d' % matr[j][i]
print tmp
tmp = ''
def proc(matr):
for i in range(5):
for j in range(5):
if matr[j][i]<0:
return i
return -1
mtr = init()
pr(mtr)
print '\n'
pr_(mtr)
print proc(mtr)
Офлайн
orondil
ты новый аккаунт зарегистировал ? Тебе ж дали решение
Офлайн
BudulianinЯ другой человек, просто приведенное Budulianin решение на его же примере возвращает 4, хотя по условию задания должно возвращать 2. Там нашли столбец первого встретившегося отрицательного числа, а просили первый столбец с хотябы одним отрицательным.matrix = (
( 1, 2, 3, 4, 5, 6, 7, ),
( 1, 2, 3, 4, -5, 6, 7, ),
( 1, 2, 3, 4, 5, 6, 7, ),
( 1, 2, -6, 4, 5, 6, 7, ),
( 1, 2, 3, 4, 5, 6, 7, ),
( 1, 2, 3, 4, 5, 6, 7, ),
( 1, 2, 3, 4, 5, 6, 7, ),
)
def find_col(matrix):
for vector in matrix:
for elem in vector:
if elem < 0:
return vector.index(elem)
print(find_col(matrix))
Отредактировано orondil (Дек. 24, 2013 22:44:25)
Офлайн
from random import randint as rand def gen_random_matrix(x=3,y=3,ot=-10,do=10): return [[ rand(ot,do) for _ in range(y)] for _ in range(x)] def check(matrix): print matrix for b in range(len(matrix)): for a in range(len(matrix[0])): if matrix[a][b] <0: return b+1 print check(gen_random_matrix())
Офлайн
orondilОгромное спасибо!
Офлайн
Singularity
Кернигана и Ритчи недавно читал ?
def find_col(matrix): for num, vector in enumerate(zip(*matrix)): for elem in vector: if elem < 0: return num
Офлайн
Budulianin
У тебя не правильный вариант ибо возвращает первую строчку, а надо первый столбец
Отредактировано Singularity (Дек. 25, 2013 21:32:59)
Офлайн
Singularity
У тебя не правильный вариант ибо возвращает первую строчку, а надо первый столбец
Отредактировано Budulianin (Дек. 25, 2013 21:24:29)
Офлайн
Budulianin
я не думаю - я тестирую
## -- End pasted text -- In [4]: find_col(i) Out[4]: 1 In [5]: i = [[1,2,-13],[1,-4,6],[1,3,7]] In [6]:
Офлайн