Ir ao conteúdo
  • Cadastre-se

Python desenvolvimento exercício de arquivos


Ir à solução Resolvido por Midori,

Posts recomendados

1481914769_ex4lista7.png.87b0772693a1170e76fb1e2036e45294.png

def questao (arquivo,dre,dic):
  arq = open(arquivo,'r')
  soma = 0
  nota = 0
      
  for linha in arq:
    if dre in linha:
      L = linha.split(',')
      pos = 0
      while pos<len(L):
        if L[pos] == dre:
          nota = float(L[pos+2])
          for creditos in dic:
            soma+= nota*creditos/creditos
        pos+= 2
    linha = arq.readline()
  arq.close()
  return soma
   
    
    
    
    
                  
                       
      
      

 imaginei dessa forma. Primeiro for pra pegar as linhas, o while pra pegar as notas e o ultimo for pra fazer a soma.

eu sei que tá errado porque ta retornando a zero mas se alguém puder me ajudar a entender melhor a questão eu agradeço

 

 

Link para o comentário
Compartilhar em outros sites

def questao(arquivo,dre,dic):
  arq = open(arquivo,'r')
  linha = arq.readline()
  soma = 0
  CRA = 0
  
  while linha!='':
    if dre in linha:
      L = linha.split(',')
      pos = 2
      notas = 0
      for codigos in dic:
        if codigos in L:
          soma+=dic[codigos]
          notas = float(L[pos+1])
          creditos = dic[codigos]
          CRA+= notas*creditos
        pos+=2
    linha = arq.readline()
  arq.close()
  return CRA/soma
    
  

 

corrigi bastante coisa no meu código, mas ele ainda não tá dando certo pra maioria das entradas 😫

 

Link para o comentário
Compartilhar em outros sites

  • Solução

@Felipe2719 Em vez de fazer o loop no dicionário, faça na lista das disciplinas, assim para as posição da disciplina na lista é só passar isso como chave do dicionário para pegar o peso. Da forma que fez está testando se o código está na lista e apenas pegando a nota na sequencia sem saber se é a disciplina correta.

 

pos = 2
notas = 0
while pos < len(L):
    if L[pos] in dic:
        creditos = dic[L[pos]]
        soma += creditos
        notas = float(L[pos + 1])
        CRA += notas * creditos
    pos += 2

 

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!