Jump to content
Juliana Mesquita

TypeError: string indices must be integers

Recommended Posts

File "D:/..... - funcao/6.py", line 50, in adicionar_time
    time.append(time_1,time_2[faltas_1,faltas_2])
TypeError: string indices must be integers

'''6. Refaça o exercício 1 da aula de manipulação de listas,
usando uma função para calcular o total de faltas do
campeonato, outra para calcular o time que fez mais faltas, e
uma terceira para calcular o time que fez menos faltas.
Antes de chamar essas funções, o programa deve permitir
que o usuário adicione mais jogos ao campeonato.
1. Faça um programa que percorre uma lista com o seguinte formato: [['Brasil', 'Italia', [10, 9]],
['Brasil', 'Espanha', [5, 7]],['Italia', 'Espanha', [7,8]]]. Essa lista indica o número de faltas
que cada time fez em cada jogo. Na lista acima, no jogo entre Brasil e Itália, o Brasil fez 10 faltas
 e a Itália fez 9. O programa deve imprimir na tela:
(a) o total de faltas do campeonato
(b) o time que fez mais faltas
(c) o time que fez menos faltas'''

time = [['Brasil', 'Italia', [10, 2]],['Brasil', 'Espanha', [5, 7]],['Italia', 'Espanha', [7,8]]]
continuar = 's'

def menos_faltas (time):
    menor = time[0][2][0]
    for i in range(len(time)):
        for j in range(2):
             if time[i][2][j]<menor:
                 menor = time[i][2][j]
                 time_menor = time[i][j]
    return time_menor

def mais_faltas (time):
    time_maior = time[0][0]
    maior = time[0][2][0]
    for i in range(len(time)):
        for j in range(2):
             if time[i][2][j]>maior:
                 maior = time[i][2][j]
                 time_maior = time[i][j]
    return time_maior

def total_faltas (time):
    soma = 0
    for i in range(len(time)):
        for j in range(2):
            soma += time[i][2][j]
    return soma


def adicionar_time (time):
    time_1 = input('Digite o nome do primeiro time : ')
    faltas_1 = int(input('Digite faltas do primeiro time : '))
    time_2 = input('Digite o nome do segundo time : ')
    faltas_2 = int(input('Digite faltas do segundo time : '))
    time.append(time_1,time_2[faltas_1,faltas_2])
    return (time)

while continuar in ['s','S','Sim','sim']:
    adicionar = input('Deseja adicionar mais um time a lista : ')
    if adicionar in ['s','S','Sim','sim']:
        adicionar_time(time)
        continuar = input(' Deseja adicionar outro time ? : ')

print(' Total de falta = ',total_faltas(time),' \n Maior quantidade de faltas = ',mais_faltas(time),' \n Menor quantidade de faltas = ',menos_faltas(time))


Gostaria de ajuda para solucionar esse erro;

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By g.dmatos
      Preciso desenvolver um algoritmo no Visualg, da função y=3x+8, onde, a partir da informação de um valor para a variável independente x, o sistema automaticamente informe o valor da variável dependente y.
       
      porém quando vou executar da erro no código:
      var x, y: real inicio escreval("Digite o valor do coeficiente x") leia(x) Escreval ("O valor da conta é igual a:" + y) Leia (y) y=(3.x)+8 fimdoalgoritmo  
    • By mamotinho
      Olá, estou com dúvidas , eu tenho a seguinte execução 
       
      SELECT SUM(Cash) as soma FROM CashAccount Eu estou querendo pega o resultado desta consulta em PHP
      tipo
       
      $result = $pdo->query("SELECT SUM(Cash) as soma FROM CashAccount"); echo $result; Mais não sei como fazer aparece o mesmo resultado que é exibido quando eu faço a execução da query no SQL, por favor alguém poderia me informar como eu poderia está fazendo.
    • By marcelojoss
      //O valor na média (resposta) sai muito diferente, gostaria de corrigir o código próximo  a lógica que ele está.
       
       
      #include <stdio.h>
      #include <stdlib.h>
      #include <locale.h>
      double media(int vetor[], int tamanho)
      {
          float soma = 0, media = 0;
          int i = 0;
          for(i = 0; i<tamanho; i++)
          {
              soma+=vetor;
          }
          media = soma / tamanho;
          return media;
      }

      int main()
      {
          setlocale(LC_ALL, "Portuguese");
          int i, x;
          float soma;
          printf("Qual o tamanho do vetor ?\n");
          scanf("%d", &x);
          double vet[x];
          for ( i = 0; i < x; i++ )
          {
              printf ( "Valor na %d posição:\n", i +1 );
              scanf("%lf", &vet[i + 1]);
              printf("%lf",vet[i + 1]);
              soma = soma  + (vet[i + 1]);
          }
          printf("\n %f", soma);
          float resposta = media(vet, x);
          printf ("A média é: %.2f \n", resposta);
          system ("pause");
          return 0;
      }
       
        
    • By luciano
      Boa noite pessoal alguém poderia me ajudar por favor,
      gostaria de pagar o valor da função random e colocar na imagem.
      -----função-----
      <p id="demo"></p>
      <script>
      document.getElementById("demo").innerHTML =
      Math.floor((Math.random() * 22) + 1);        
      </script>
      ----------
       <img src="imagens/('#demo').jpg" alt="Card">
       
      Eu ja tentei:
      ('#demo')
      '#demo'
      "#demo"
      Nada funciona.
       
      Por favor me dem uma luz, não manjo de java
      Obrigado
    • By geovani.cristofolini
      Bom dia pessoal,
       
      Preciso fazer uma consulta SQL que aplica o cálculo de juros compostos (juros sobre juros).  https://www.significados.com.br/juros-compostos/
       
      Valor Inicial:  R$ 1.000,00         Mês Juros Reajuste 01/08/2019 0,12%  R$   1.001,20 01/09/2019 -0,05%  R$   1.000,70 01/10/2019 0,04%  R$   1.001,10 01/11/2019 0,54%  R$   1.006,51 01/12/2019 1,22%  R$   1.018,78       Valor Reajuste:  R$ 1.018,78    
      Creio que apenas usando select não seja possível, porque necessita de uma estrutura de repetição para aplicar o resultado do primeiro mês em outro mês e assim sucessivamente.
       
      Penso que devo fazer uma função, onde passaria como parâmetro, o valor inicial, data inicial e data final.

      Como não tenho conhecimento em desenvolvimento de função no mysql, gostaria de um exemplo, assim acredito que conseguido implementar.

      Preciso de um exemplo de função, que faz um loop girando em todos os registros da tabela de juros, filtrando os meses conforme data inicial e final, para cada registro, aplicaria o percentual de reajuste. No primeiro mês aplicaria o percentual em cima do valor inicial, nos proximos meses aplicaria o percentual em cima do reajuste anterior.
       
      Alguém já fez essa cálculo? 
       
      Estou usando o MySQL versão 5.1.73.
       
       
       
       
       
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.