Comentários do Blog

  1. Avatar de nennogabriel
    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.
  2. Avatar de dimasters
    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
    Atualizado 21-11-2010 em 21:25 por dimasters
  3. Avatar de dimasters
    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.
  4. Avatar de dimasters
    Esse é bom e bem prático
  5. Avatar de dimasters
    Cara muito bom
  6. Avatar de zamperlini
    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?
  7. Avatar de silvanofideles
    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.
  8. Avatar de Magnun
    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
  9. Avatar de silvanofideles
    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}
  10. Avatar de skarllot
    [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