3
respostas

[Dúvida] Dúvida Laço for

Preciso fazer essa questão: Com os mesmos dados da questão anterior, defina quantas compras foram acima de 3000 reais e calcule a porcentagem quanto ao total de compras.

Estou tentando fazer pelo seguinte código, porém não da certo

gastos = [2172.54, 3701.35, 3518.09, 3456.61, 3249.38, 2840.82, 3891.45, 3075.26, 2317.64, 3219.08]
cont = 0

for gastos >= 3000:
  cont += 1
print(f'O total de compras acima de $3000 foi de {cont}')

A sugestão para resolver esse problema seria essa:

for gasto in gastos:
  if gasto > 3000:
    contador_acima_3000 += 1

Minha dúvida é como é que o for vai ler "gasto" se não declarei ele?

3 respostas

Oi, Isadora, tudo bem?

No Python, quando usamos um laço de repetição for, a variável que você coloca após a palavra-chave for (neste caso, gasto) é uma variável temporária criada para cada iteração do laço. Ou seja, para cada elemento em gastos, a variável gasto é criada e recebe o valor daquele elemento.

Abaixo temos outro exempli para que você entenda melhor como essa variável temporária é usada ao aplicar o for:

lista = [1, 2, 3, 4, 5]

for numero in lista:
    print(numero)

Neste exemplo, numero é a variável temporária criada para cada iteração do laço. Na primeira iteração, numero é igual a 1, na segunda iteração, numero é igual a 2, e assim por diante.

No seu caso, gasto é a variável temporária que recebe o valor de cada elemento em gastos para cada iteração do laço. Portanto, não é necessário declarar gasto anteriormente.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum!

Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Oi, Rodrigo!! Muito obrigada pela sua explicação.

Queria aproveitar para tirar outra dúvida com relação a variável que declaramos antes do laço For, mas nesse é um dicionário.

Situação 1:

votos = {'Design_1': 1334, 'Design_2': 982, 'Design_3': 1751, 'Design_4': 210, 'Design_5': 1811}

total_votos = 0
vencendor = ''
voto_vencedor = 0

for design, voto_desing in votos .items():
  total_votos += voto_desing
    if voto_desing > voto_vencedor:
      voto_vencedor = voto_desing
      vencedor = design

aqui colocamos duas variáveis após o for. O código entende que design seria para a chave e voto_design para os valores? Ou ele entende porque colocamos items( ) e ele irá armazenar os valores das chaves??

Situação 2:

dados = {'Área Norte': [2819, 7236],
 'Área Leste': [1440, 9492],
 'Área Sul': [5969, 7496],
 'Área Oeste': [14446, 49688],
 'Área Centro': [22558, 45148]}    #sendo que o primeiro numero é referente a área e o segundo a quantidade de espécies 

soma_media = 0
maior_diversidade = ''
maior_soma = 0

for area, especies in dados.items():
  soma_especies = sum(especies)
  media = soma_especies/len(especies)

Nesse caso temos duas variaveis área e especies. Como que o código identifica que queremos armazenar os valores da quantidade de espécies e não o tamanho da área?

Oi, Isadora, tudo bem?

Desculpe a demora em te responder!

Na primeira situação, quando você itera sobre um dicionário, na linguagem Python, usando o método .items(), a variável à esquerda da vírgula representa as chaves (no seu primeiro exemplo, design), e a variável à direita da vírgula representa os valores associados a essas chaves (no seu primeiro exemplo, voto_design). Isso é uma convenção e não depende do nome que você dá às variáveis, mas sim da ordem em que elas aparecem ao aplicar o método .items().

No segundo caso, a mesma lógica se aplica. O Python associa a variável area às chaves do dicionário, e a variável especies aos valores associados a essas chaves. Portanto, no contexto desse loop, especies representaria a lista de quantidades de espécies para cada área, e não o tamanho da área em si.

Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum!

Abraços e bons estudos!