Estrutura:
for variável in lista:
comando(s)
Para cada elemento da lista, em ordem de ocorrência, é atribuído este elemento à variável e então é executado o(s) comando(s).
a = [1, 21, 31]
for i in a:
print(i)
É comum fazermos um laço for iterar sobre valores numéricos.
Em Python o comando range(n) gera uma lista (implicita) com os valores de \(0\) até \(n-1\).
O programa abaixo imprime os números de 0 até 9.
for i in range(10):
print(i)
Podemos especificar um intervalo de valores na função range:
O programa abaixo imprime os números de 5 até 9.
for i in range(5,10):
print(i)
Podemos especificar um passo a ser considerado no intervalo de valores da função range.
O programa abaixo imprime os números pares entre 0 e menores que 13.
for i in range(0,13,2):
print(i)
Imprimindo os \(n\) primeiros números inteiros:
n = int(input("Digite um número:"))
for i in range(1,n+1):
print(i)
Leia 5 dados inteiros e coloque-os numa lista
lista = []
for i in range(5):
dado = int(input('Entre com o dado:'))
lista.append(dado)
Faça uma função leia5 que le 5 dados inteiros e retorna um lista com esses dados
def leia5():
lista = []
for i in range(5):
dado = int(input('Entre com o dado: '))
lista.append(dado)
return lista
Faça uma função leian que le n dados inteiros e retorna um lista com esses dados
def leian(n):
lista = []
for i in range(n):
dado = int(input('Entre com o dado: '))
lista.append(dado)
return lista
Faça uma função soma recebe uma lista de numeros e retorna a soma deles
def soma(lista):
s = 0.0
for x in lista:
s = s + x
return s
Faça um programa que le \(n\), depois le \(n\) dados e imprime a média deles.
use o soma e leian acima
faça uma solução que não cria a lista de dados
a soma deles
Faça um programa que le \(n\), depois le \(n\) dados e imprime a média deles.
a soma deles
n = int(input('Quantidade de dados: '))
l = leian(n)
s = soma(l)
print(s/len(l))
Faça um programa que le \(n\), depois le \(n\) dados e imprime a média deles.
a soma deles
n = int(input('Quantidade de dados: '))
s=0.0
for i in range(n)
x = int(input('dado: ')
s = s + x
print(s/n)
Faca uma função que dado uma lista retorna o maior elemento da lista
def maior(l):
ma = 0
for x in l:
if x>ma:
ma = x
return ma
Não esta 100% OK - e se os números da lista forem negativos?
Faça uma função que dado uma lista retorna o indice do maior elemento da lista
def maior(l):
ma = 0
n = len(l)
for i in range(n):
if l[i]>ma:
ma = l[i]
pos = i
return pos
E se em vez de dar o \(n\) antes, o usuário entrar com uma linha vazia para indicar que ele terminou de entrar com os dados.
Neste caso temos 3 novos problemas:
o que é lido quando o usuário não entra nada?
como fazer um loop que a gente não sabe quantas vezes vai rodar (antes de começar o loop)
como interromper um loop
O comando break faz com que a execução de um laço seja terminada, passando a execução para o próximo comando depois do final do laço.
for i in range (1,11):
if(i >= 5):
break
print(i)
print("Terminou o laço")
O que será impresso?
O comando break faz com que a execução de um laço seja terminada, passando a execução para o próximo comando depois do final do laço.
for i in range (1,11):
if(i >= 5):
break
print(i)
print("Terminou o laço")
O que será impresso?
Estrutura:
while condição :
comando(s)
Enquanto a condição for verdadeira (True
), ele executa o(s) comando(s).
Passo 1: Testa condição. Se condição for verdadeira vai para Passo 2.
Passo 2.1: Executa comandos;
Passo 2.2: Volta para o Passo 1.
O while só testa a condição no começo do loop!
A forma mais comum de usar o while é
while True:
comandos
if tem que terminar:
break
mais comandos
Isso cir aum loop que fica rodando (condição do while é sempre True!) até que no meio do loop voce descobre que tem que terminar!
i=1
while True:
if(i > 10):
break
print(i)
i = i+1
O que será impresso?
E se em vez de dar o \(n\) antes, o usuário entrar com uma liha vazia para indicar que ele terminou de entrar com os dados.
Neste caso temos 3 novos problemas:
o que é lido quando o usuário não entra nada? - o string vazio
como fazer um loop que a gente não sabe quantas vezes vai rodar (antes de começar o loop) - while True
como interromper um loop - break
def leiafim ():
lista = []
while True:
x = input('Entre com os dados: ')
if x = '':
break
dado = int(x)
lista.append(dado)
return lista
Faça uma função que recebe uma lista e retorna True se a lista for palindromica - a lista é igual da esquerda para a direita e o reverso
é palindromica
‘asdffdsa’ é um string (que é mais ou menos uma lista) palindromico
não é palindromico
A série de Fibonacci é: \(1, 1, 2, 3, 5, 8, 13, \ldots\)
Ou seja o \(n\)-ésimo termo é a soma dos dois anteriores \[F(n) = F(n-1) + F(n-2)\] onde \(F(1)=1\) e \(F(2)=1\).
Problema Fazer um programa que imprime os primeiros \(n\) números da série de fibonacci.
o range cria uma lista implicita.
a principal coisa é que uma lista implicita funciona no for
acesso e len também funcionam
x = range(3)
x
len(x)
for i in x:
print(i)
x[1]
x == [0,1,2]
x.append(7)
para converter uma lista implicita numa explicita use a função list
x
list(x)
não se preocupe com listas implicitas. é algo meio que estranho no Python. Poucas coisas geram listas implicitas. Mas pode ser que no futuro vc acha que esta trabalhando com uma lista e o == não funciona. Lembre-se então das listas implicitas.