Ir ao conteúdo

Python Erro de Lista fora do range Python


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

Posts recomendados

Postado
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
Postado

@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)

 

  • Solução
Postado

@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

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!