Olá victoreng, Que bom que ficou claro! Quanto à ordem dos itens no dicionário, isso não é culpa minha, é do Python mesmo! Eu até hoje não entendi (na verdade não tive curiosidade ao ponto de ir atrás do motivo) por que o Python "desordena" o dicionário... Um exemplo: Código Python: >>> smashing_pumpkins = {'Gish':1991, 'Siamese Dream':1993, 'Mellon Collie':1995} >>> print smashing_pumpkins {'Gish': 1991, 'Mellon Collie': 1995, 'Siamese Dream': 1993} >>> for item in smashing_pumpkins.items(): print item ... ('Gish', 1991) ('Mellon Collie', 1995) ('Siamese Dream', 1993) >>> Como você pode ver, criei o dicionário com as chaves na ordem: 'Gish', 'Siamese Dream', 'Mellon Collie'. Depois no print vc pode ver que o Python reorganizou o dicionário colocando o 'Siamese Dream' depois de 'Mellon Collie'. Todo mundo vai falar: "ah, é simples! ele ordena por ordem alfabética: g, m, s.". Se é isso, me expliquem por que isso acontece: Código Python: >>> d = {'a':1, 'b':2, 'c':3} >>> print d {'a': 1, 'c': 3, 'b': 2} >>> Como o 'c' foi para antes do 'b'?!?! Vou pesquisar isso, quando eu descobrir posto por aqui... Obrigado por fazer essa pergunta, eu devia ter ressaltado isso no texto! Foi falha minha. Até mais...
>>> smashing_pumpkins = {'Gish':1991, 'Siamese Dream':1993, 'Mellon Collie':1995} >>> print smashing_pumpkins {'Gish': 1991, 'Mellon Collie': 1995, 'Siamese Dream': 1993} >>> for item in smashing_pumpkins.items(): print item ... ('Gish', 1991) ('Mellon Collie', 1995) ('Siamese Dream', 1993) >>>
>>> d = {'a':1, 'b':2, 'c':3} >>> print d {'a': 1, 'c': 3, 'b': 2} >>>
Eai Magnum blza? Bem que você falou, que este post ia dar uma luz no for, eu acabei tendo que parar no outro e nem tinha visto esse aqui, agora eu entendi o funcionamento do for. Mas me reponde uma coisa, acho que tem uns erros nas telas de código, abaixo tem uma delas smashing_pumpkins = {'Gish':1991, 'Siamese Dream':1993, 'Mellon Collie':1995} >>> for album,ano in smashing_pumpkins.items(): ... print 'O album',album,'foi lançado em',ano ... O album Gish foi lançado em 1991 O album Mellon Collie foi lançado em 1995 O album Siamese Dream foi lançado em 1993 >>> Se você reparar na ordem das chaves no dicionário e na ordem do resultado, está diferente, como se tivesse corrido de trás para frente, acredito que foi erro no CTRL+C/CTRL+V...ehehhe Abraços
Olá cleoson, Bom ver que as pessoas estão seguindo o curso! Qualquer dúvida estou à disposição. Até mais...
Olá! Apenas para registrar minha 'presença' no curso! :-) Um abraço!
Olá victoreng, Como eu disse, de tão simples ele gera dúvidas! Mas tente encarar as coisas com simplicidade. Quanto à verificação do for ele faz a verificação antes de começar o loop. Um exemplo simples para entender: Código : >>> lista = [1,2,3] >>> for item in lista: ... print 'item:',item ... item: 1 item: 2 item: 3 >>> >>> lista = [] >>> for item in lista: ... print 'item:',item ... >>> Como pode ver, quando a lista está vazia ele simplesmente nem entra no for. O for do Python é completamente diferente do for em C/C++. Ele não trabalha com condição, ele trabalha com iteração. Mas se você quiser imaginar o for do Python similar ao for do C/C++, imagine que "por dentro" da linha for letra in texto ele faz algo mais ou menos assim: for (i=0,i<=len(texto),i++) Só que ao invés de você trabalhar com o i o for do Python ainda é mais bonzinho e te retorna o item do texto correspondente ao numero i. É aquilo que eu disse, é melhor simplesmente aceitar que ele vai sempre funcionar. Na aula após essa eu comentei um pouco mais sobre o comportamento do for. Dá uma olhada aqui: Entendendo o For Espero que tenha entendido. Qualquer coisa é só entrar em contato! Até mais...
>>> lista = [1,2,3] >>> for item in lista: ... print 'item:',item ... item: 1 item: 2 item: 3 >>> >>> lista = [] >>> for item in lista: ... print 'item:',item ... >>>
É nunca imaginei um for dessa maneira, o for vem repetindo seu formato padrão em anos....mas aqui simplesmente jogou fora tudo que conhecia e colocou algo muito mais simples, mas como você falou Magnum de tão simples me surgiu uma dúvida, com esse for se repete igual ao outros na parte de ele fazer uma verificação antes de começar o enlace? ou não ele fica como o ""do...while"" do C++ e afins?? ele executa sempre uma vez, o costume do antigo for atrapalha um pouco..heheh outra coisa, estava esquecendo, como eu consigo tipo fazer dele um contador como antes eu fazia Antigo for: for(i=0;i<=10;i++) Python: eu tentei mas não consegui, não dá mesmo? abraços
Olá caio, seu e-mail foi respondido.
Magnun, Lhe enviei um e-mail (magnun[I] at[/I] under-linux [I]dot[/I] org) com um problema que espero que o senhor consiga resolver. Aguardo resposta. PS: Excelente curso, continue, com certeza é de grande importância para quem quer saber um pouco mais de forma intuitiva.
Olá victoreng, desculpa a demora na resposta! Essa linha geralmente gera uma confusão mesmo. Como você mesmo disse, os argumentos são (Inicio,Fim,Passo). Com isso temos que o inicio é em 1 o fim é em -1 e o passo não foi definido logo, por padrão, é 1. A lista é ["Rush", "The Cure", "Pink Floyd", "The Doors"], desmembrando a lista... item 0: Rush item 1: The Cure item 2: Pink Floyd item 3: The Doors Então o item 1 é "The Cure". Para achar o item -1 temos que pensar da seguinte forma: item -4: Rush item -3: The Cure item -2: Pink Floyd item -1: The Doors Logo o item -1 é "The Doors". O esperado seria ele retornar ["The Cure", "Pink Floyd", "The Doors"] mas não é isso que acontece. Quando definimos o índice final no slicing ele tem o comportamento peculiar de não incluir esse último elemento, logo ele retorna somente ["The Cure", "Pink Floyd"]. Espero que tenha ficado claro! Qualquer coisa posta ai. Até mais...
Olá PeterParkerBR, Obrigado pelo apoio, sempre preciso de ajuda nos meus projetos, se quiser dar uma olhada, eles estão disponíveis aqui: Projects|MindBending