Criar Matriz e selecionar uma coluna e uma linha

13. Re:Criar Matriz e selecionar uma coluna e uma linha

André
arsaraiva

(usa Ubuntu)

Enviado em 14/04/2017 - 10:43h

Olá amigos! Olá Lisandro!

Uma boa Páscoa para todos!
Ainda estou com algum erro no meu código.
No primeiro if, estou fazendo o cálculo da metade da linha. (como preciso do teto, fiz a seginte verificação)
Se for par (4%2 =0), meio da linha é igual a metade do tamanho, porém se for impar (e.x. 5 %2=1), meio é igual a metade do tamanho +1 (5/2 = 2 +1 = 3). Até aqui tudo ok.
if (tamanho%2 == 0):
meio = (tamanho/2)
else:
meio = (tamanho/2)+1

for item in matriz:
if item not in linha and item[1] == col:
linha.append(item)
if item not in linha and item[0] == lin:
#linha.append(item)
for lin in meio:
linha.append(meio)
meio+=1

Na segunda parte, com a ajuda do amigo Lisandro, alterei o segundo IF (da linha). Até então pensei que fazendo um for lin in meio resolveria, mais nem compila.
Como fazer com que dada a matriz:

11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55

Após o random selecionar a coluna e a linha (por exemplo, coluna 2 e linha 4) ele faça a leitura dos 3 elementos da linha após a coluna. Então a saída seria: [12 22 32 42 43 44 52]
Lembrando que se a coluna fosse a 4, por exemplo: [14 24 34 44 45 51 54]
Não consigo fazer com uma iteração.
Grato


  


14. Re: Criar Matriz e selecionar uma coluna e uma linha

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 14/04/2017 - 18:41h

Dá uma olhada se isso ajuda:

import random

tamanho = 5
matriz = []
linha = []

for elemento in range(1, tamanho + 1):
a = str(elemento)
for elemento in range(1, tamanho + 1):
b = str(elemento)
matriz.append(a + b)
print(matriz)

col = str(random.randrange(1,tamanho,1))
print ('Coluna: ', col)
lin = str(random.randrange(1,tamanho,1))
print ('Linha: ', lin)

if (tamanho%2 == 0):
meio = str(tamanho//2)
else:
meio = str((tamanho//2)+1)

for item in matriz:
if item[0] < meio:
if item not in linha and item[1] == col:
linha.append(item)
if item not in linha and item[0] == lin:
linha.append(item)
#for lin in meio:
# linha.append(meio)
# meio+=1

print('Resultado: ')
for result in linha:
print('padrao[' + result + ']', end=',')


Abraço


15. Re:Criar Matriz e selecionar uma coluna e uma linha

André
arsaraiva

(usa Ubuntu)

Enviado em 14/04/2017 - 19:43h

Olá Lisandro, boa noite.
Obrigado por perder seu feriado me ajudando.
Algo não funcionou bem. Repare a saída do idle:
['11', '12', '13', '14', '15', '21', '22', '23', '24', '25', '31', '32', '33', '34', '35', '41', '42', '43', '44', '45', '51', '52', '53', '54', '55']
Coluna: 4
Linha: 4
Resultado:
padrao[14],padrao[24],

Onde deveria ser:
Resultado:
padrao[14],padrao[24],padrao[34],padrao[44],padrao[45],padrao[51],padrao[54]

Os valores 14,24,34,44 e 54 são dados pela coluna, já o 44, 45 e 51 é dado pela linha (como tamanho é cinco, dever ser 3 elementos (5/2+1).

Repare esta outra saída com tamanho = 7:
['11', '12', '13', '14', '15', '16', '17', '21', '22', '23', '24', '25', '26', '27', '31', '32', '33', '34', '35', '36', '37', '41', '42', '43', '44', '45', '46', '47', '51', '52', '53', '54', '55', '56', '57', '61', '62', '63', '64', '65', '66', '67', '71', '72', '73', '74', '75', '76', '77']
Coluna: 2
Linha: 3
Resultado:
padrao[12],padrao[22],padrao[31],padrao[32],padrao[33],padrao[34],padrao[35],padrao[36],padrao[37],

É possível perceber que o resultado retorna a coluna 2 até a linha (que surge inteira). Isso deveria ser o inverso, retornar toda a coluna 3 (13, 23, 33, 43, 53, 63 e 73) e meia linha 2 (23, 24, 25 e 26), quatro elementos já que 7/2+1 = 4.

Tentei mudar no código a posição de lin e col, porém não alterou em nada. Alguma ideia?
Obrigado!


16. r

André
arsaraiva

(usa Ubuntu)

Enviado em 14/04/2017 - 19:50h

Esqueci de mencionar que se altero o if para depois da coluna, nada acontece:
import random

tamanho = 7
matriz = []
linha = []

for elemento in range(1, tamanho + 1):
a = str(elemento)
for elemento in range(1, tamanho + 1):
b = str(elemento)
matriz.append(a + b)
print(matriz)

col = str(random.randrange(1,tamanho,1))
print ('Coluna: ', col)
lin = str(random.randrange(1,tamanho,1))
print ('Linha: ', lin)

if (tamanho%2 == 0):
meio = str(tamanho//2)
else:
meio = str((tamanho//2)+1)

for item in matriz:
if item not in linha and item[1] == col:
linha.append(item)
if item[0] < meio:
if item not in linha and item[0] == lin:
linha.append(item)
#for lin in meio:
# linha.append(meio)
# meio+=1

print('Resultado: ')
for result in linha:
print('padrao[' + result + ']', end=',')


Também se altero a localização de col e lin,
import random

tamanho = 7
matriz = []
linha = []

for elemento in range(1, tamanho + 1):
a = str(elemento)
for elemento in range(1, tamanho + 1):
b = str(elemento)
matriz.append(a + b)
print(matriz)

col = str(random.randrange(1,tamanho,1))
print ('Coluna: ', col)
lin = str(random.randrange(1,tamanho,1))
print ('Linha: ', lin)

if (tamanho%2 == 0):
meio = str(tamanho//2)
else:
meio = str((tamanho//2)+1)

for item in matriz:
if item[0] > meio:
if item not in linha and item[1] == lin:
linha.append(item)

if item not in linha and item[0] == col:
linha.append(item)
#for lin in meio:
# linha.append(meio)
# meio+=1

print('Resultado: ')
for result in linha:
print('padrao[' + result + ']', end=',')


A saída fica errada (no lugar da coluna fica linha):
['11', '12', '13', '14', '15', '16', '17', '21', '22', '23', '24', '25', '26', '27', '31', '32', '33', '34', '35', '36', '37', '41', '42', '43', '44', '45', '46', '47', '51', '52', '53', '54', '55', '56', '57', '61', '62', '63', '64', '65', '66', '67', '71', '72', '73', '74', '75', '76', '77']
Coluna: 5
Linha: 2
Resultado:
padrao[51],padrao[52],padrao[53],padrao[54],padrao[55],padrao[56],padrao[57],padrao[62],padrao[72],


17. Re: Criar Matriz e selecionar uma coluna e uma linha

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 14/04/2017 - 23:00h

Acho que ainda não entendi bem onde quer chegar, pois uma parte da tua explicação ficou sem sentido para mim. Eu devo ter interpretado errado o que tu queres.
Poderia explicar, talvez fazendo um tipo de enunciado?
Por enquanto segue umas mudanças:

import random

tamanho = 5
matriz = []
linha = []

for elemento in range(1, tamanho + 1):
a = str(elemento)
for elemento in range(1, tamanho + 1):
b = str(elemento)
matriz.append(a + b)
print(matriz)

col = str(random.randrange(1,tamanho,1))
print ('Coluna: ', col)
lin = str(random.randrange(1,tamanho,1))
print ('Linha: ', lin)

if (tamanho%2 == 0):
meio = str(tamanho//2)
else:
meio = str((tamanho//2)+1)

print('Meio: ', meio)

for item in matriz:
if item not in linha and item[1] == col:
linha.append(item)
if item not in linha and item[0] == lin:
if item[0] < meio:
linha.append(item)

print('Resultado: ')
for result in linha:
print('padrao[' + result + ']', end=',')



18. Re: Criar Matriz e selecionar uma coluna e uma linha

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 14/04/2017 - 23:37h

Talvez este esteja mais próximo:

import random

tamanho = 5
matriz = []
linha = []

for elemento in range(1, tamanho + 1):
a = str(elemento)
for elemento in range(1, tamanho + 1):
b = str(elemento)
matriz.append(a + b)
print(matriz)

col = str(random.randrange(1,tamanho,1))
print ('Coluna: ', col)
lin = str(random.randrange(1,tamanho,1))
print ('Linha: ', lin)

if (tamanho%2 == 0):
meio = str(tamanho//2)
else:
meio = str((tamanho//2)+1)

print('Meio: ', meio)

for item in matriz:
if item not in linha and item[1] == col:
linha.append(item)
if item not in linha and item[0] == lin:
if item[1] > meio:
linha.append(item)

print('Resultado: ')
for result in linha:
print('padrao[' + result + ']', end=',')



19. Re:Criar Matriz e selecionar uma coluna e uma linha

André
arsaraiva

(usa Ubuntu)

Enviado em 15/04/2017 - 14:42h

Olá Lisandro,

Estamos quase lá.
Para explicar melhor o que preciso fazer.
segue a saída do ultimo código que você me enviou.
['11', '12', '13', '14', '15', '21', '22', '23', '24', '25', '31', '32', '33', '34', '35', '41', '42', '43', '44', '45', '51', '52', '53', '54', '55']
Coluna: 1
Linha: 2
Meio: 3
Resultado:
padrao[11],padrao[21],padrao[24],padrao[25],padrao[31],padrao[41],padrao[51],

visualizando a matriz
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55

Bem, é quase isso, a coluna está ok (11,21,31,41 e 51). A Linha teria que ser 21, 22 e 23. A variável meio na verdade só serve para definir quantos elementos preciso pegar da linha, a partir da coluna e não o indice[1].
11 12 13 14 15
2122 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55

Outro exemplo (a saída correta deverá ser assim):
['11', '12', '13', '14', '15', '21', '22', '23', '24', '25', '31', '32', '33', '34', '35', '41', '42', '43', '44', '45', '51', '52', '53', '54', '55']
Coluna: 3
Linha: 4
Meio: 3
Resultado:
padrao[13],padrao[23],padrao[33],padrao[43], padrao[44], padrao[45],padrao[53],
visualizando a matriz
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55

E mais outro exemplo:
['11', '12', '13', '14', '15', '21', '22', '23', '24', '25', '31', '32', '33', '34', '35', '41', '42', '43', '44', '45', '51', '52', '53', '54', '55']
Coluna: 4
Linha: 2
Meio: 3
Resultado:
padrao[14],padrao[24], padrao[25], padrao[31], padrao[34], padrao[44], padrao[54], (como meio é igual a 3, o valor 31 vem da linha seguinte)
visualizando a matriz
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55

Coloquei em negrito a saída esperada. Estou tentando por aqui. Se puder me ajudar neste final, já agradeço.


20. Re: Criar Matriz e selecionar uma coluna e uma linha

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 15/04/2017 - 21:08h

Vamos ver se agora entendi:

import random

tamanho = 5
matriz = []
linha = []

for elemento in range(1, tamanho + 1):
a = str(elemento)
for elemento in range(1, tamanho + 1):
b = str(elemento)
matriz.append(a + b)
print(matriz)

col = str(random.randrange(1,tamanho,1))
print ('Coluna: ', col)
lin = str(random.randrange(1,tamanho,1))
print ('Linha: ', lin)

if (tamanho%2 == 0):
meio = str(tamanho//2)
else:
meio = str((tamanho//2)+1)

print('Meio: ', meio)

cont = int(meio)
for item in matriz:
if item not in linha and item[1] == col:
linha.append(item)
if item not in linha and item[0] == lin:
if item[1] >= meio and cont > 0:
linha.append(item)
cont -= 1

print('Resultado: ')
for result in linha:
print('padrao[' + result + ']', end=',')



21. Re:Criar Matriz e selecionar uma coluna e uma linha

André
arsaraiva

(usa Ubuntu)

Enviado em 15/04/2017 - 22:47h

Olá Lisandro, boa noite.

Deu certo com tamanho 5, porém quando fiz tamanho 7, deu um pequeno errinho. Olha a saída:

['11', '12', '13', '14', '15', '16', '17', '21', '22', '23', '24', '25', '26', '27', '31', '32', '33', '34', '35', '36', '37', '41', '42', '43', '44', '45', '46', '47', '51', '52', '53', '54', '55', '56', '57', '61', '62', '63', '64', '65', '66', '67', '71', '72', '73', '74', '75', '76', '77']
Coluna: 5
Linha: 6
Meio: 4
Resultado:
padrao[15],padrao[25],padrao[35],padrao[45],padrao[55],padrao[64],padrao[65],padrao[66],padrao[67],padrao[75],

tudo certo, porém como a coluna foi 5, então na linha deveria ser 65, 66, 67, 71. Repare que o padrao[64] seria antes da coluna 5...o que não atende a regra. Existe alguma forma de incrementar isso, de forma a fazer o append andar para frente ou alterar o cont -=1


22. Re:Criar Matriz e selecionar uma coluna e uma linha

André
arsaraiva

(usa Ubuntu)

Enviado em 15/04/2017 - 22:48h

Em tempo, uma Feliz Páscoa para você e sua família!!!


23. Re: Criar Matriz e selecionar uma coluna e uma linha

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 16/04/2017 - 00:22h

Minha falta de atenção nos teus exemplos de resultado.
Veja se agora vai:

import random

tamanho = 5
matriz = []
linha = []

for elemento in range(1, tamanho + 1):
a = str(elemento)
for elemento in range(1, tamanho + 1):
b = str(elemento)
matriz.append(a + b)
print(matriz)

col = str(random.randrange(1,tamanho,1))
print ('Coluna: ', col)
lin = str(random.randrange(1,tamanho,1))
print ('Linha: ', lin)

if (tamanho%2 == 0):
meio = str(tamanho//2)
else:
meio = str((tamanho//2)+1)

print('Meio: ', meio)

cont = int(meio)
for item in matriz:
if item not in linha and item[1] == col:
linha.append(item)
if item[0] == lin and item[1] == col:
indice = matriz.index(item) + 1
nova = matriz[indice : indice + cont]
linha.extend(nova)

print('Resultado: ')
for result in linha:
print('padrao[' + result + ']', end=',')



24. Re:Criar Matriz e selecionar uma coluna e uma linha

André
arsaraiva

(usa Ubuntu)

Enviado em 22/04/2017 - 16:22h

Lisandro, ficou fora de série, fantástico.

Bem, das 10 questões que eu tinha que fazer, agora só falta ajustar uma. Queria saber se pode me ajudar nesta:

repare o código:
linha= [0,1,3,37,52,191,308,332,433,914,919,984,1093]
print(linha)
for result in linha:
print('padrao[' + result + ']', end=' = ')


bem eu tentei aproveitar parte dos outros códigos, já que a saída tem que ser a mesma, mais deu erro:
Traceback (most recent call last):
File "C:/Users/André/Desktop/BD.py", line 4, in <module>
print('padrao[' + result + ']', end=' = ')
TypeError: must be str, not int

a variável linha é dada e a saída pedida é :
padrao[0], padrao[1], padrao[3],...., padrao[1093]

Será que poderia me dar uma ajuda?



01 02 03



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts