1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Dificuldade em código Python

Discussão em 'Programação' iniciada por Psycop, 13 de Julho de 2009. (Respostas: 149; Visualizações: 11465)

  1. Psycop

    Psycop I fold therefore I AM

    Boas sou um iniciante em python e tenho tido alguns problemas ao tentar resolver aplicações simples, e não sei onde estou a errar...

    A minha dúvida é a seguinte:

    O código a que eu cheguei, mas que não dá qualquer resultado é o seguinte:

    Não sei se poderei reslover o problema desta forma, mas não estou a ver como resolver isto...
    Se alguem me puder explicar onde estou a erra agradecia...

    Cumps
    Psycop
     
    Última edição: 4 de Agosto de 2009
  2. Kayvlim

    Kayvlim Permission Denied
    Staff Member

    No print, troca a, b e f por str(a), str(b) e str(f).
    Já agora, és capaz de querer terminar as strings c, d e e com um espaço (assim como ao iniciar d e e) :P
     
    Última edição: 13 de Julho de 2009
  3. Psycop

    Psycop I fold therefore I AM

    Boas

    Não percebi o que querias dizer com o terminar as strings c, d, e com um espaço...
    Quanto ao mudar no print para str(a,b,c) não produziu qualquer efeito....

    Cumps
     
  4. Kayvlim

    Kayvlim Permission Denied
    Staff Member

    Não...

    Código:
    a = 73
    b = 27
    c = 'Divisão de'
    d = 'por'
    e = 'da'
    
    f = (a/b)
    
    print c + [B]str([/B]a[B])[/B] + d + [B]str([/B]b[B])[/B] + e + [B]str([/B]f[B])[/B] 			 			
    
    Quanto às strings, corre este código e vais perceber o que eu queria dizer :)
     
  5. Psycop

    Psycop I fold therefore I AM

    Obrigado pela ajuda, já percebi o que querias dizer com dar espaços entre as strings....
    Já funciona...
    Cumps
     
  6. Psycop

    Psycop I fold therefore I AM

    Novo exercicio, e novamente surgem duvidas as quais não encontro resposta..

    Aqui fica o exercicio:

    Aqui fica o código a que cheguei:

    Se alguem me conseguir dizer onde está o erro, e o que posso melhorar, agradecia...

    Cumps
     
  7. O teu problema está no if. Está mal feito. Não podes fazer a comparação da forma que fizeste.
    E tens que efectuar o teste para cada um dos números. Logo testas um de cada vez.

    If numero1 >= 0:
    Print 'P'

    Isto para os três. Podes encadear depois os if's e etc e pôr isso mais elegante, mas não sei se já saberás isso, por isso para já três if's resolvem-te o problema.

    EDIT:

    Código:
    numero1=raw_input('Valor 1: ')
    numero2=raw_input('Valor 2: ')
    numero3=raw_input('Valor 3: ')
    
    if numero1 >=0:
    print 'P'
    else 
    print 'N'
    
    if numero2 >=0:
    print 'P'
    else 
    print 'N'
    
    if numero3 >=0:
    print 'P'
    else 
    print 'N'
    
    Penso que seria algo deste género.
     
    Última edição: 13 de Julho de 2009
  8. Psycop

    Psycop I fold therefore I AM

    Boas

    Tentei fazer como disseste | Blasted | e cheguei ao seguinte:

    Agora o problema e que ao executar só me pede o valor1 e não pede nenhum dos outros nem imprime se é 'P' ou 'N'

    Cumps
     
  9. Kayvlim

    Kayvlim Permission Denied
    Staff Member

    Cuidado com a indentação. Python usa-a para separar os blocos.


    Código:
    if(numero1 >= 0):
        print 'P'
    else:
        print 'N'
    
    Repetir para numero2 e numero3. Não há forma de fazer isto sem repetir? :x
     
  10. Exactamente. Se não indentares isso, vais ter problemas ; )

    Era para mim? Ou para o pôr a pensar?:007:
     
  11. Kayvlim

    Kayvlim Permission Denied
    Staff Member

    Para quem quiser responder, porque para ser sincero, não percebo nada de Python, praticamente só comecei a pegar nisso quando li este tópico para procurar a resposta ao primeiro post :x
    Talvez usando uma array de variáveis onde entra cada input e um for para as iterar?
     
  12. Psycop

    Psycop I fold therefore I AM

    Se usar o else dá o seguinte erro:

     
  13. Kayvlim

    Kayvlim Permission Denied
    Staff Member

    A sintaxe é
    Código:
    if qualquercoisa > 0:
       faz qualquer coisa
    else:
       faz qualquer coisa
    
    Atenção aos ":" no final do if e do else, e atenção à indentação (espaços ou tabs antes dos "faz qualquer coisa")

    edit - curioso... em Python, tanto podem haver parêntesis como podem não haver, no if?
     
  14. Não sou nenhum ás do python. Aliás conheço o básico mesmo. Mas isto acaba por ser mais algoritmia ainda, penso eu.

    Por exemplo, um ciclo não faria o serviço?

    Código:
    for (int i=0; i<3; ++i) {
        int numero;
        cout << "Insira um número: ";
        cin >> numero;
        if (numero >= 0)
            cout << "P" << endl;
        else 
            cout << "N" << endl;
    }
    
    Sintaxe de c++ que é o que estou mais familiarizado. Espero que conheças.
     
  15. Kayvlim

    Kayvlim Permission Denied
    Staff Member

    A questão é eu não conhecer arrays em Python :P

    O problema nesse código é que aí o ciclo é pergunta-resposta pergunta-resposta pergunta-resposta em vez de pergunta-pergunta-pergunta resposta-resposta-resposta. Em C, seria

    Código:
    #include <stdio.h>
    
    int main(int argc, char *argv[])
    {
            int numeros[3], i;
    
            for(i=0; i<3; i++)
            {
                    scanf("%d", numeros+i);
            }
    
            printf("\n");
    
            for(i=0; i<3; i++)
            {
                    printf((numeros[i] > 0) ? "P" : "N");
            }
    
            printf("\n");
    
            return 0;
    }
    
     
  16. Mr_Miguel

    Mr_Miguel Power Member

    Permitam-me então que esclareça as vossas dúvidas:

    Código:
    numeros = [] #Leia-se: numeros = <array vazio>
    numero_de_numeros_que_queremos_ler = 3
    
    for i in range(0,numero_de_numeros_que_queremos_ler):
        numero_lido = int(raw_input('Valor ' + str(i + 1) + ': '))
        numeros.append(numero_lido)
    for x in numeros:
        if (x >= 0):
            print "P"
        else:
            print "N"
    
    Os arrays (na realidade, chamam-se "listas" em Python) em Python funcionam como vectores em Java/C++: usa-se uma função para acrescentar elementos.

    Outra coisa que não sei se tinham percebido: o raw_input lê uma string. É preciso convertê-la para inteiro (função int()).
     
  17. Nem tinha reparado nesse pormenor. Acaba por fazer o mesmo, mas realmente para ser fiel ao que ele fez da primeira vez deve ser pergunta-pergunta-pergunta-resposta-resposta-resposta.
    Ora nem mais. Em c++ a mesma coisa. Quanto a fazer isso em phyton já é outra história. Nunca cheguei a ir tão à frente quando vi algumas coisas de phyton :P


    Em c++ temos o push_back, aqui pelo que vejo o append
    Como diz um professor meu, saber programar não é saber linguagens. Muitas delas teem imensas semelhanças e o que interessa é algoritmia. :P


    Não fazia a mínima ideia. Mas não complica também :D
     
    Última edição: 14 de Julho de 2009
  18. Psycop

    Psycop I fold therefore I AM

    Aqui estou eu com mais uma duvida num exercicio:
    O exercicio é o seguinte:
    O código a que cheguei foi o seguinte:

    Além de não conseguir ler os valores nem conseguir contar as digitos (ou seja em -1234, so existem 4 digitos e 5 como o len verifica).
    Sei que so posso inserir variaveis int, pois ao inserir letras em vez de numeros o programa tem de dizer numero inválido..
    Se alguem me puder clarificar estas minhas duvidas agradecia...

    Cumps
    Psycop
     
  19. Mr_Miguel

    Mr_Miguel Power Member

    Repara que eles te pedem para fazer uma função. Tu só fizeste o programa.

    Exemplo de uma função:

    Código:
    def numero_de_digitos(numero):
         print "0"
    
    Exemplo de um programa que use esta função:

    Código:
    def numero_de_digitos(numero):
         print "0"
    
    numero_de_digitos(5)
    
    Obviamente, o resultado está errado: 5 tem 1 dígito, não 0. A tua função aqui é, na função numero_de_digitos, meter lá o código correcto. Saber quantos dígitos tem um número é um algoritmo bastante básico. A minha pergunta neste momento é: sabes qual é o algoritmo? Dado um número, como sabemos quantos dígitos tem?

    (só pergunto isto porque não sei se és iniciante em Python, em programação, ou as duas coisas)
     
  20. nao dei phyton mas pelos conhecimentos que tenho leva-me a perguntar se para ler nao se utiliza o reader em vez do print, é assim em C. dscp a invasao
     

Partilhar esta Página