Estruturas de repetição¶
As estruturas de repetição são utilizadas quando queremos que um bloco de código seja executado várias vezes.
Em Python existem duas formas de criar uma estrutura de repetição:
O
for
é usado quando se quer iterar sobre um bloco de código um número determinado de vezes.O
while
é usado quando queremos que o bloco de código seja repetido até que uma condição seja satisfeita. Ou seja, é necessário que uma expressão booliana dada seja verdadeira. Assim que ela se tornar falsa, owhile
para.
Nota
Na linguagem Python a indentação é obrigatória. assim como nas estruturas de controle, as estruturas de repetição também precisam.
>>> # Aqui repetimos o print 3 vezes
>>> for n in range(0, 3):
... print(n)
...
0
1
2
>>> # Aqui iniciamos o n em 0, e repetimos o print até que seu valor seja maior ou igual a 3
>>> n = 0
>>> while n < 3:
... print(n)
... n += 1
...
0
1
2
O loop for
em Python itera sobre os itens de um conjunto, sendo assim, o
range(0, 3)
precisa ser um conjunto de elementos. E na verdade ele é:
>>> list(range(0, 3))
[0, 1, 2]
Para iterar sobre uma lista:
>>> lista = [1, 2, 3, 4, 10]
>>> for numero in lista:
... print(numero ** 2)
...
1
4
9
16
100
Isso se aplica para strings também:
>>> # Para cada letra na palavra, imprimir a letra
>>> palavra = "casa"
>>> for letra in palavra:
... print(letra)
...
c
a
s
a
Em dicionários podemos fazer assim:
>>> gatinhos = {"Português": "gato", "Inglês": "cat", "Francês": "chat", "Finlandês": "Kissa"}
>>> for chave, valor in gatinhos.items():
... print(chave, "->", valor)
...
Português -> gato
Inglês -> cat
Francês -> chat
Finlandês -> Kissa
Para auxiliar as estruturas de repetição, existem dois comandos:
break
: É usado para sair de um loop, não importando o estado em que se encontra.
continue
: Funciona de maneira parecida com a dobreak
, porém no lugar de encerrar o loop, ele faz com que todo o código que esteja abaixo (porém ainda dentro do loop) seja ignorado e avança para a próxima iteração.
Veja a seguir um exemplo de um código que ilustra o uso desses comandos. Note que há uma string de documentação no começo que explica a funcionalidade.
"""
Esse código deve rodar até que a palavra "sair" seja digitada.
* Caso uma palavra com 2 ou menos caracteres seja digitada, um aviso
deve ser exibido e o loop será executado do início (devido ao
continue), pedindo uma nova palavra ao usuário.
* Caso qualquer outra palavra diferente de "sair" seja digitada, um
aviso deve ser exibido.
* Por fim, caso a palavra seja "sair", uma mensagem deve ser exibida e o
loop deve ser encerrado (break).
"""
>>> while True:
... string_digitada = input("Digite uma palavra: ")
... if string_digitada.lower() == "sair":
... print("Fim!")
... break
... if len(string_digitada) < 2:
... print("String muito pequena")
... continue
... print("Tente digitar \"sair\"")
...
Digite uma palavra: oi
Tente digitar "sair"
Digite uma palavra: ?
String muito pequena
Digite uma palavra: sair
Fim!
Exercícios¶
Calcule a tabuada do 13.
Ler do teclado uma lista com 5 inteiros e imprimir o menor valor.
Ler do teclado uma lista com 5 inteiros e imprimir
True
se a lista estiver ordenada de forma crescente ou False caso contrário.Exiba em ordem decrescente todos os números de 500 até 10.
Ler do teclado 10 números e imprima a quantidade de números entre 10 e 50.
Ler do teclado a idade e o sexo de 10 pessoas, calcule e imprima:
idade média das mulheres
idade média dos homens
idade média do grupo
Calcule o somatório dos números de 1 a 100 e imprima o resultado.
Receba dois números inteiros correspondentes à largura e altura. Devolva uma cadeia de caracteres
#
que representa um retângulo com as medidas fornecidas.Ler do teclado um número inteiro e imprimir se ele é primo ou não.
Um restaurante que enfrenta problemas com sua capacidade de clientes pediu sua ajuda para fazer um programa para saber quando eles atingem sua capacidade máxima. Faça um programa que leia um número inteiro da capacidade máxima do restaurante, e depois pergunte e leia a quantidade de clientes que chegaram até ocupar toda a capacidade do restaurante e quando lotar imprima na tela «Restaurante lotado, não há mais mesas disponíveis».
O grupy-sanca tem uma fixação com números primos, e é uma tradição marcar seus eventos em horas e minutos que sejam números primos, como por exemplo 19:31.
Você ficou responsável por marcar o próximo Pylestras, e, seguindo a tradição, gostaria de marcar o evento para um horário cuja hora e minuto sejam números primos.
Para escolher a melhor opção, você gostaria de saber todos os horários que satisfazem esta condição!
Crie um programa que imprime no formato
HH:MM
todos os horários cuja hora e minuto são números primos.Nota
Zero não é um número primo e divisões por zero podem estragar suas contas!
As reuniões mais memoráveis do grupy-sanca são, sem dúvidas, os PyBares! Quando finalmente foi decretado o final da pandemia de Covid-19, pythonistas de São Carlos e região se reuniram para comemorar, e a comemoração foi tanta, que neste momento estão com dificuldades de listar quais atividades e eventos são organizados pelo grupo, sem repetirem as já listadas.
Como programar já é a sua especialidade, você resolveu escrever um programa para sanar este pequeno problema. Seu programa deve ler um número N que determina quantos eventos e atividades foram elencados (que pode ter itens repetidos), e, em seguida, N nomes de atividades e eventos organizados pelo grupy-sanca e imprimir uma lista ordenada alfabeticamente e sem itens repetidos.
Dica: utilize o operador
in
para testar se uma entrada já está na lista, e o métodosort
para ordená-la. Também pode ser útil utilizar o métodostrip
no seuinput
para evitar que espaços em branco interfiram nas suas comparações.Uma das atividades preferidas do grupy-sanca é o Coding Dojo. Coding Dojo é uma atividade colaborativa onde pessoas se reúnem a fim de resolver desafios de programação juntas, programando em pares, e utilizando a metodologia de desenvolvimento orientada a testes (TDD). A pessoa na posição do piloto programará por 5 minutos, orientada pela pessoa na posição de copiloto, e ao final deste tempo, o piloto voltará para a plateia, o copiloto será promovido a piloto e uma pessoa da plateia tomará a posição de copiloto.
plateia -> copiloto -> piloto -> plateia
Você está responsável pela organização do Coding Dojo de hoje, e, para garantir que todas as pessoas participarão da atividade da forma mais justa possível, você resolveu criar um programa que imprimirá o nome de cada dupla que representará copiloto e piloto em cada rodada.
Você pegou no Meetup uma lista com N nomes de participantes, a duração do evento é de 2 horas, e cada rodada dura 5 minutos. Caso você chegue ao final da lista e o tempo ainda não tiverem passado as 2h do Coding Dojo, você começará de novo.
Nota
Utilize o operador de resto da divisão (
%
) para iterar circularmente sobre a lista.