Dificuldade em código Python

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:

Escreve um programa que calcula a divisão de dois valores, a e b, em que a = 73 e b = 27.
Deverá aparecer no ecrã:
Divisao de 73 por 27 da 2
O código a que eu cheguei, mas que não dá qualquer resultado é o seguinte:

a = 73
b = 27
c = 'Divisão de'
d = 'por'
e = 'da'

f = (a/b)

print c + a + d + b + e + f
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:
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:
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
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
 
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 :)
 
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 :)

Obrigado pela ajuda, já percebi o que querias dizer com dar espaços entre as strings....
Já funciona...
Cumps
 
Novo exercicio, e novamente surgem duvidas as quais não encontro resposta..

Aqui fica o exercicio:

Cria um programa que determina se um número é positivo ou negativo. Imprime "P" se for >= 0 e "N" em caso contrário.
O programa deverá ler três números do utilizador e imprimir o teste para cada um deles.

Aqui fica o código a que cheguei:

numero1=raw_input('Valor 1: ')
numero2=raw_input('Valor 2: ')
numero3=raw_input('Valor 3: ')

if numero1,numero2,numero3 >=0:
print 'P'
if numero1,numero2,numero3 <0:
print 'N'

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

Cumps
 
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

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:
Boas

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

numero1=raw_input('Valor 1: ')
numero2=raw_input('Valor 2: ')
numero3=raw_input('Valor 3: ')

If numero1 >= 0:
Print 'P'
If numero1 < 0:
Print 'N'


If numero2 >= 0:
Print 'P'
If numero2 < 0:
Print 'N'


If numero3 >= 0:
Print 'P'
If numero3 < 0:
Print 'N'

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
 
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
 
Era para mim? Ou para o pôr a pensar?:007:
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?
 
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?
 
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?

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.
 
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;
}
 
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()).
 
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

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.
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;
}

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

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.


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

Outra coisa que não sei se tinham percebido: o raw_input lê uma string. É preciso convertê-la para inteiro (função int()).


Não fazia a mínima ideia. Mas não complica também :D
 
Última edição:
Aqui estou eu com mais uma duvida num exercicio:
O exercicio é o seguinte:
Faz uma função que lê 3 números do utilizador e imprime a quantidade de dígitos desse número.

Deve aparecer no ecrã (recebendo 5):
Deve aparecer no ecrã (recebendo -1234):
Deve aparecer no ecrã (recebendo ola):
Numero invalido!

O código a que cheguei foi o seguinte:

a=input("Introduza Valor1: ");
b=input("Introduza Valor2: ");
c=input("Introduza Valor3: ");

print len(a)
print len(b)
print len(c)

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
 
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)
 
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
 
Back
Topo