pela identação. por exeplo: else do if: [PHP] i = 0 while True: i += i + 1 if i % 7 == 0: print(i,"é divisível por 7") else: print(i, "não é divisível por 7") [/PHP] else do while: [PHP] i = 0 while i < 100: i += i + 1 if i % 7 == 0: print(i,"é divisível por 7") else: print("i é maior que 100 : i é igual a", i) [/PHP] sacou? em python a identação é tudo... sem ela não tem como o interpratador saber onde começa e termina uma condição ou um loop. se escrever: [PHP] i = 0 while i < 100: i += 1 print("i é maior que 100. i é igual a", i) [/PHP] o python vai escrever a fraze algumas vezes na hora errada. mas se escrever: [PHP] i = 0 while i < 100: i += 1 print("i é maior que 100. i é igual a", i) [/PHP] ele só escreverá a frase depois que i for maior ou igual a 100 lembrando que a identação é criada pelo desenvolvedor, pode ser uma marca de tabulação ou 4 espaços (formas mais comuns), mas tbm pode ser apenas um espaço ou 9 espaços. Também pode-se identar de forma variada num mesmo projeto, desde que a identação seja igual a cada loop ou condição.. um exemplo estranho de identação correta seria: [PHP] i = 0 while i < 100: i += 1 if i == 5 : for n in range(1000): print(n) print("i é maior que 100. i é igual a", i) [/PHP] O que não é recomendavel, pois se voce quiser tirar o if e descer o for um nivel, tá no exemplo da pra fazer.. mas num código com paginas e paginas.. complica... recomendo que escolha sua identação e a use... eu uso 4 espaços e mando o meu editor de texto trocar o tab por 4 espaços pra facilitar minha vida. apenas tome cuidado pois um tab não são 4 espaços... o editor quem converte. se: [PHP] i = 0 while i < 100: i += 1 #imagine que este foi usado um TAB print("i é maior que 100. i é igual a", i) #este com 4 espaços [/PHP] aparentemente estão certos, mas o o interpretador retornará erro na identação.
Magnun seguinte tenho uma pergunta Como o python sabe se ele é do while ou do ultimo if dentro do while? Não é comparando mas por exemplo em C [CODE] void main(){ int x =0; while( true ){ x++; if( x == 10){ break; } else{ printf('%d',x); } } } [/CODE] Faz tempo que vi C então não reparem o código Só pra exclarecer 'C' não deve ter o else para while certo mas vamos supor que tem nele sabemos que else pertence a if e a while ja em python como sabemos disso, no código postado em python com continue e break a única coisa que da pra saber sobre o que pertence a que é pela tabulação do código certo? Seu eu quiser colocar esse else do while pro if e deixar o while sem else como ficaria, como ele identifica cada um? Abraço
Esse processo de checagem com o type() é ideal para não deixar uma entrada inválida com raw_input() e retornar o erro do código do python... Então vc checa a variável independente da entrada, se for um typo válido continua do contrário pode reenviar um pedido assim não mostra um aviso ao usuário.
Esse é bom e bem prático
Cara muito bom
Olá Magnum! Descobri seu curso a algumas semanas e comecei a segui-lo. Estou adorando! No passado já programei um pouquinho em Pascal, VB, Delphi e C superficialmente. Agora estava procurando uma idéia como a sua para me aliar. Python tem se mostrado pra mim, através do seu curso, como uma linguagem bem tranquila de se trabalhar. Como uma boa linguagem de alto nível, o raciocínio lógico se converte em código de uma forma bastante direta. Obrigado pelo curso! Gostaria apenas de comentar um pequeno engano, provavelmente de digitação: quando você definiu a função mostra_x(), no mesmo código você fez a chamada da função altera_x(), não criada até aquele momento. Um grande abraço! Aguardo ansioso pelo anúncio do seu projeto. Quem sabe poderei auxiliar de alguma forma?
Legal, sanei minhas dúvidas, e agradeço a rápida resposta e muito mais a sua ajuda e dedicação... só tenho que te parabenizar pelo belo trabalho.
Olá silvanofideles, ficaria da seguinte forma: Código : #!/usr/bin/env python # -*- coding: utf-8 -*- faltas = {'aluno1':2, 'aluno2':3, 'aluno3':7, 'aluno4':11, 'aluno5':0, 'aluno6':10} conselho = {'aluno1':7, 'aluno2':6, 'aluno4':8, 'aluno3':9, 'aluno5':10, 'aluno6':7} notas = {'aluno1':[5,6,5], 'aluno2':[7,8,6], 'aluno3':[6,6,8], 'aluno4':[5,9,8], 'aluno5':[5,6,3], 'aluno6':[6,6,6]} for aluno in faltas: if faltas[aluno] > 10: print 'O aluno',aluno,'foi reprovado por faltas' else: media = 0 for nota in notas[aluno]: media += nota media = float(media)/3 if media >= 6: print 'O aluno',aluno,'foi aprovado com média:',media else: if conselho[aluno] >= 8: print 'O aluno',aluno,'foi aprovado pelo conseho de classe' else: print 'O aluno',aluno,'foi reprovado com média:',media
#!/usr/bin/env python # -*- coding: utf-8 -*- faltas = {'aluno1':2, 'aluno2':3, 'aluno3':7, 'aluno4':11, 'aluno5':0, 'aluno6':10} conselho = {'aluno1':7, 'aluno2':6, 'aluno4':8, 'aluno3':9, 'aluno5':10, 'aluno6':7} notas = {'aluno1':[5,6,5], 'aluno2':[7,8,6], 'aluno3':[6,6,8], 'aluno4':[5,9,8], 'aluno5':[5,6,3], 'aluno6':[6,6,6]} for aluno in faltas: if faltas[aluno] > 10: print 'O aluno',aluno,'foi reprovado por faltas' else: media = 0 for nota in notas[aluno]: media += nota media = float(media)/3 if media >= 6: print 'O aluno',aluno,'foi aprovado com média:',media else: if conselho[aluno] >= 8: print 'O aluno',aluno,'foi aprovado pelo conseho de classe' else: print 'O aluno',aluno,'foi reprovado com média:',media
Magnun, gostaria de propor um dicionário a mais no exercício acima, só para compreender melhor o assuntos. Digamos que tivéssemos o dicionario abaixo e para aqueles alunos que reprovaram por media, ainda tivesse uma chance no conselho de classe com nota dos professores acima de 8. como ficaria ??? conselho = {'aluno1':7, 'aluno2':6, 'aluno4':8, 'aluno3':9, 'aluno5':10, 'aluno6':7}
[QUOTE=Crushing;bt8541]Sei que o post é antigo mas se alguém puder ajudar agradeço... fiz as regras corretamente, tal e qual descrito aqui. O problema é que parece que o connection tracking não funciona nesse caso, o meu servidor web está respondendo para o gateway porém o mesmo não encaminha para o host que fez a requisição. Alguma luz? Desde já agradeço a qualquer resposta.[/QUOTE] Acredito que basicamente é assim: Rede Interna -- eth0 -- [ Firewall ] -- eth1 -- Internet iptables -t nat -A POSTROUTING -s $RedeInterna -o eth1 -j SNAT --to $IpExterno iptables -t nat -A PREROUTING -d $IpExterno --dport $PortaExterna -j DNAT --to $IpInterno:$PortaInterna