Ir ao conteúdo
  • Cadastre-se

Python Erro de Lista fora do range Python


Ir à solução Resolvido por Fídias Torres,

Posts recomendados

import os
linhas = []
colunas = []
valores_colunas = []
menor = []
maior = []
maiores = []
menores = []
lixeira = []
regra_de_tres_p1 = []
regra_de_tres_p2 = []
n = -1
p = -1
r1 = []
qtdColuna = int(input('DIGITE O NÚMERO DE COLUNAS DA SUA TABELA: '))
qtdLinha  = int(input('DIGITE O NÚMERO DE LINHAS  DA SUA TABELA: '))
os.system('cls')
for coluna in range(qtdColuna):
  print("COLUNA ",coluna)
  nom_coluna = str(input("NOME DESSA COLUNA: ") )
  colunas.append(nom_coluna)
for linha in range(qtdLinha):
  print("LINHA ",linha)  
  nom_linha = str(input("NOME DESSA LINHA: ") )
  linhas.append(nom_linha)
for coluna in range(qtdColuna):
  vet_coluna = []
  for linha in range(qtdLinha):
    print("ARMAZENAR VALOR EM", colunas[coluna]," COLUNA", linhas[linha])
    val = int(input(": ") )
    vet_coluna.append(val)
  valores_colunas.append( vet_coluna )
os.system('cls')
for position_n in range(qtdLinha):
    n += 1
    for maimen in range(qtdColuna):
        p += 1
        for p in range(qtdColuna):
            if p == 0:
                maior = menor = valores_colunas[n][p]
            else:
                if valores_colunas[n][p] > maior:
                    maior = valores_colunas[n][p] 
                if valores_colunas[n][p] < menor:
                    menor = valores_colunas[n][p]
    maiores.append(maior)
    menores.append(menor) 
print(valores_colunas) 
n1 = -1
n2 = -1
p1 = -1
p2 = -1
p3 = -1
for diferença in range(qtdColuna):
  n1 += 1
  n2 += 1
  for diferença2 in range(qtdLinha):
    p1 += 1
    for diferença3 in range(qtdLinha):
      p2 += 1
      p3 += 1 
      r1.append(valores_colunas[n1][p1] - valores_colunas[n2][p2])
      if r1[p3] != 0:
        regra_de_tres_p1.append(r1)
      else:
        lixeira.append(r1)
print(regra_de_tres_p1)
print(lixeira) 

 

agora, Fídias Torres disse:
n1 = -1
n2 = -1
p1 = -1
p2 = -1
p3 = -1
for diferença in range(qtdColuna):
  n1 += 1
  n2 += 1
  for diferença2 in range(qtdLinha):
    p1 += 1
    for diferença3 in range(qtdLinha):
      p2 += 1
      p3 += 1 
      r1.append(valores_colunas[n1][p1] - valores_colunas[n2][p2])
      if r1[p3] != 0:
        regra_de_tres_p1.append(r1)
      else:
        lixeira.append(r1)
print(regra_de_tres_p1)
print(lixeira)

Nessa parte que está dando erro de "list index out of range"

n1 = -1
n2 = -1
for diferença in range(qtdColuna):
  n1 += 1
  n2 += 1
  for diferença2 in range(qtdLinha):
    p1 = -1
    p1 += 1
    p2 = -1
    for diferença3 in range(qtdLinha):
      p2 += 1
      for diferença4 in range(qtdLinha):
        r1.append(valores_colunas[n1][p1] - valores_colunas[n2][p2])
        regra_de_tres_p1.append(r1)
print(regra_de_tres_p1)

Achei essa solução, mas ele ta armazenando o mesmo valor de acordo com o range

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Fídias Torres    o erro é por posição inexistente na list ,  você precisa validar a list para não dar erros :

n1 = -1
n2 = -1
p1 = -1
p2 = -1
p3 = -1
for diferença in range(qtdColuna):
  n1 += 1
  n2 += 1
  for diferença2 in range(qtdLinha):
    p1 += 1
    for diferença3 in range(qtdLinha):
      p2 += 1
      p3 += 1
      if n1 < qtdColuna and p1 < qtdColuna:
        res = valores_colunas[n1][p1]
        print("res=",res)
        if n2 < qtdLinha and p2 < qtdLinha:
          rez = valores_colunas[n2][p2]
          print("rez=", rez)
        r1.append(res)
      if p3 < qtdColuna and p3 < qtdLinha:
        if r1[p3] != 0:
          regra_de_tres_p1.append(r1)
        else:
          lixeira.append(r1)
print(regra_de_tres_p1)
print(lixeira)

 

Link para o comentário
Compartilhar em outros sites

  • Solução

@devair1010

n1 = -1
n2 = -1
for diferença in range(qtdColuna):
  n1 += 1
  n2 += 1
  for diferença2 in range(qtdLinha):
    p1 = -1
    for diferença3 in range(qtdLinha):
      p1 += 1
      p2 = -1
      for diferença4 in range(qtdLinha):
        p2 += 1
        r1.append(valores_colunas[n1][p1] - valores_colunas[n2][p2])
regra_de_tres_p1.append(r1)
print(regra_de_tres_p1)

Fiz desse jeito aqui e ta dando certo, mas ele ta salvando o mesmo valor repetidas vez de acordo com a quantidade de Linha que eu seleciono:

por exemplo:

se eu escolho a quantidade de Linha como 4, ele vai fazer todas as diferenças e armazenar 4 vezes.

Tem alguma maneira de arrumar isso?

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...