- Aula
- Revisão
- Editor
- Desafio
Listas
Usamos listas cotidianamente: listas de compras, listas de tarefas a cumprir, listas de ingredientes de uma receita, lista dos vídeos mais vistos na Internet, lista das músicas mais tocadas, etc.
Listas são muito importantes também em Python e em linguagens de programação em geral.
Em Python uma lista é uma coleção de valores organizados em uma sequência. Em Python, podemos ter uma lista de números
10 | 11 | 34 | 7 | 18 | 21 |
ou uma lista de cadeias de caracteres
Sílvio Sousa | Beatriz Silva | Francisco Buarque |
ou uma lista com números e cadeias de caracteres misturados:
Zé da Venda | 235 | Maria Rosa | 230 |
Duas propriedades de listas são importantes em Python. Uma propriedade é que os itens de uma lista são organizados em uma sequência, e nos referimos ao primeiro item da lista, segundo item da lista e assim por diante:
Outra propriedade é que podemos atribuir uma lista a uma variável. Assim, podemos armazenar em uma única variável uma "coleção de valores", como nomes e respectivos números de telefones, ou nomes de times e dados referentes a um campeonato, como partidas jogadas, pontos ganhos, gols marcados, etc.
A Barra de Ferramentas inclui um menu Listas com blocos para manipulação de listas em Python. Inicialmente vamos ver dois blocos, para criar uma lista e adicionar itens a uma lista.
O bloco crie lista vazia
O bloco crie lista vazia como o nome indica, cria uma lista vazia, ou seja, uma lista que não tem nenhum item:
Esse bloco é usado para inicializar uma variável que vai conter uma lista, como no exemplo abaxo, em que uma variável de nome "jogadores" é inicializada com uma lista vazia:
O bloco acrescente na lista
O bloco acrescente na lista é usado para incluir um novo item em uma lista.
Esse bloco tem dois espaços vazios: o primeiro é para indicarmos em qual lista queremos acrescentar o item, o segundo espaço vazio é para indicarmos o valor do item a ser acrescentado.
Considere o programa abaixo, que cria uma lista usando uma variável de nome lista
Quando executado, esse trecho de programa produz:
['A', 'B', 12]
Note como o computador escreve a lista na saída: os itens da lista dentro de um par de colchetes, as cadeias de caracteres dentro de um par de aspas simples, e os itens separados por vírgulas.
Veja agora o programa acima na linguagem Python (não precisa entender o programa em Python, o exemplo é apenas para você ter uma ideia da linguagem Python; mais adiante no curso vamos ver os comandos em Python em detalhes):
lista = [] lista.append('A') lista.append('B') lista.append(12) print(lista)
Na próxima aula vamos aprender como consultar e alterar os itens de uma lista individualmente.
O bloco Leia Linha
O bloco Leia linha está disponível no menu Entrada e Saída da Barra de Ferramentas:
Como o nome indica, ele é usado para ler uma linha inteira da entrada. Ele tem como resultado uma cadeia de caracteres e pode ser usado por exemplo para ler um nome, como Maria Clara, ou um número de telefone, como (11) 5432-1234.
Para ilustrar, vamos usar o bloco Leia linha com uma variável de nome linha e vamos imprimir o valor da variável linha linha para duas entradas diferentes.
Entrada | Saída |
Maria Clara |
Maria Clara |
Note que a variável linha nesse caso tem como valor a cadeia de caracteres "Maria Clara". Observe agora o mesmo programa para esta outra entrada:
Entrada | Saída |
1234 |
1234 |
A variável linha nesse caso tem como valor a cadeia de caracteres "1234", e não o número mil duzentos e trinta e quatro!
Para ficar mais claro, vamos tentar usar um bloco aritmético com a variável linha:
Entrada | Saída |
1234 |
Erro! |
Ocorre um erro! Isto porque a variável linha contém uma cadeia de caracteres e não um número, e o computador não consegue adicionar um valor inteiro a uma cadeia de caracteres. Internamente, números e cadeias de caracteres são armazenados de forma diferente pelo computador.
Ou seja, se quisermos ler um número da entrada, devemos utilizar o bloco Leia número:
Entrada | Saída |
1234 |
1235 |
Recorde que o bloco Leia número exige que a linha da entrada contenha somente um número; mais adiante no curso veremos como ler uma linha que contém mais de um número.
Lista de Honra
A profa. Vilma quer fazer um pequeno cartaz comemorativo com os nomes e notas dos alunos que conseguiram 80 ou mais pontos na Olimpíada Científica da escola.
Dada uma lista com os nomes e pontuações dos alunos, seu programa deve produzir na saída uma lista de nomes e pontos dos alunos que conseguiram 80 ou mais pontos.
Entrada
A primeira linha da entrada contém um inteiro N, o número de alunos participantes. A seguir a entrada contém o nome e a pontuação dos N participantes, alternando uma linha com o nome de um participante e uma linha com a respectiva pontuação.
Saída
Seu programa deve escrever na saída a representação de uma lista, no formato usado por Python, com os nomes e pontuações dos participantes que conseguiram 80 ou mais pontos. A lista deve ser formada por uma sequência composta pelos nomes seguidos da respectiva pontuação (veja os exemplos).
Restrições
- 1 ≤ N ≤ 100
- 0 ≤ pontuação de cada aluno ≤ 100
- nome de cada aluno é composto por no mínimo um e no máximo 50 caracteres, entre espaços em branco e letras maiúsculas e minúsculas, sem acento, e nunca inicia ou termina com espaço em branco.
Exemplos
Entrada
3 Maria Clara Silva 83 Pedro Henrique Souza 79 Carlos Eduardo Santos 80 |
Saída
['Maria Clara Silva', 83, 'Carlos Eduardo Santos', 80] |
Entrada
1 Paula Oliveira 91 |
Saída
['Paula Oliveira', 91] |
Entrada
2 Leila Santana 79 Francisco Duarte 77 |
Saída
[] |
Solução
Aqui você encontra um exemplo de solução para o desafio. Mas antes de ver a solução tente resolvê-lo, criando a sua própria solução.
Solução do DesafioVamos inicialmente ler a quantidade de alunos e criar uma lista vazia, que atribuiremos a uma variável de nome lista_de_honra. Então usamos um laço de repetição. A cada passo da repetição lemos duas linhas, a primeira com o nome e a segunda com a nota de um aluno. Se a nota é maior ou igual a 80, adicionamos o nome e a nota na variável lista_de_honra. Ao final, imprimimos o valor da variável lista_de_honra.
Blockly
|
Python# Solução do Desafio da Aula 14 N = int(input()) lista_de_honra = [] for count in range(int(N)): nome = input() num = int(input()) if num >= 80: lista_de_honra.append(nome) lista_de_honra.append(num) print(lista) |