Hoje é Ter Mai 22, 2012 10:24 am





Criar novo tópico Responder Tópico  [ 15 Mensagens ]  Ir para a página 1, 2  Próximo
Duvidas 
Autor Mensagem

Data de registro: Ter Dez 16, 2008 11:15 pm
Mensagens: 15
Mensagem Duvidas
Galera venho estudando python sozinho e tenho algumas duvidas.

Há como fazer com que o print não pule linha ?
Em python há algum comando como o 'rand()' em C.
Caso sim como se chama?


Ter Dez 16, 2008 11:29 pm
Perfil E-mail

Data de registro: Ter Dez 16, 2008 11:15 pm
Mensagens: 15
Mensagem Re: Duvidas
Acabei de ler sobre o python 3 e vi como seria para
escrever numa mesma linha na versão mais antiga
"print x,"
é necessario uma virgula ;)


Qua Dez 17, 2008 12:36 am
Perfil E-mail
Site Admin

Data de registro: Sex Nov 21, 2008 11:45 pm
Mensagens: 22
Localização: Cubatão - SP - Brasil
Mensagem Re: Duvidas
Oi Rodrigo,

Sim, adicionando uma vírgula ele não pula linha =)

Mas tome cuidado para não se focar muito no Python 2.x, lembre-se que em breve o Python 3 será o padrão.

Abraços!


Qua Dez 17, 2008 10:08 am
Perfil E-mail WWW

Data de registro: Qui Mar 12, 2009 2:33 pm
Mensagens: 6
Mensagem Re: Duvidas
Caros amigos, escrevi esse código simples em Python e queria a opnião dos senhores para sanar a minha dúvida. Nunca programei na vida e tô estudando Python por conta própria, há apenas 3 semanas, só por materiais da net, inclusive, acompanhando as aulas do nosso amigo infog, segue o código:
Código:
# -*- coding: cp860 -*-
# testinho.py - Cálculo de km/l de um veículo

print '-' * 40                                       
print 'Cálculo da relação km/l de um veículo '
print '-' * 40
print
print '(Para encerrar o programa apenas digite ENTER)'
print
while 1:
    try:
        c = raw_input('Quantos km você rodou? ')
        e = raw_input('Quantos litros você utilizou? ')
        d = float(c)
        f = float(e)
        g = d/f
        print 'Seu consumo foi de: %.2f km/l.' % g 
        break     
    except:
       if len(c) == 0:
           break
        elif len(e) == 0:
           break
        elif d == 0:
           break
        elif f == 0:
           break
        elif ',' in c or ',' in e:
            print 'Use o ponto . (ponto) como separador decimal e recomece.'
        else:
            print 'Isso não parece um número válido. Recomece digitando um número válido.'
if g <= 5: print 'Consumo EXTREMAMENTE exagerado, faça uma revisão urgente.'
elif 5 < g <= 6: print 'Consumo exagerado, tente aliviar o pé‚ no acelerador.'
elif 6 < g < 7: print 'Consumo mediano, bom de melhorar.'
elif g >= 7: print 'Seu carro consome muito pouco, qual o modelo heim??? :)'
print '-' * 15
print 'Fim do Programa'
print '-' * 15

A minha intenção era que o programinha verificasse o consumo dos veículos, porém se os dados são números, ele responde bem e imprime o resultado numa boa, mas quando tem erros de digitação, ele ignora as instruções. Não sei como fazer pra ele 'ler' o 'except', alguém tem alguma sugestão? O que estou fazendo de errado? Help! :mrgreen:


Qui Mar 12, 2009 2:43 pm
Perfil E-mail

Data de registro: Ter Dez 16, 2008 11:15 pm
Mensagens: 15
Mensagem Re: Duvidas
elif d == 0:
NameError: name 'd' is not defined

Olá amigo,

Esse erro é dado na hora que vc transforma pra float()
isso pq quando tenta trasnformar uma string para um numero dá erro. Ai quando ele entra no
except tenta testar as variveis que deram erro tipo :

#1
d = float(c) *
f = float(e) *
g = d/f

* nessa parte ele não consegue transformar uma string em um numero de ponto
flutuante nisso ele pula pra o except devido a esse erro e lá
tem o seguinte trecho

elif d == 0:
break
elif f == 0:
break

como disse em #1 ele dá um erro e não define as variaveis d e f quando vc
pede pra testa-la ele diz que essas não foram definidas. Aconselho a vc
testar se os dados recebidos são digitos sendo verdadeiro poderá usar sem
problemas o float() .

para testar use a .isdigit algo como
c.isdigit() e.isdigit retorna true caso a string for um digito e false caso não for

tentaria explicar mais porem tenho que ir agora :D

boa sorte
caso não resolva posta denovo .


Qui Mar 12, 2009 4:07 pm
Perfil E-mail

Data de registro: Qui Mar 12, 2009 2:33 pm
Mensagens: 6
Mensagem Re: Duvidas
Obg pela ajuda César. Pelo que sei a função raw_input gera uma string e quando coloco a função float é para o resultado ser um número em ponto flutuante, pois assim consigo utilizar, digamos assim, matematicamente. Resumindo, não sei porque a variável 'd' não está definida, pois foi definida no início e apenas o except compara a varáivel a zero e isso não está parando o loop. Continuo sem entender. :|


Qui Mar 12, 2009 4:18 pm
Perfil E-mail

Data de registro: Ter Dez 16, 2008 11:15 pm
Mensagens: 15
Mensagem Re: Duvidas
Voce está completamente certo mas como disse a raw_input recebe uma string
e quando vc digita algo como (LEIA APARTIR DA DICA LA NO FINAL)

Quantos quilometros vc rodou : dois
Quantos litros utilizou : 3

d = float("dois") aqui que dá erro ele não consegue transformar
uma string em um numero o mesmo seria se por acaso
vc colocasse um numero e um caractere


Quantos quilometros vc rodou : 31a
Quantos litros utilizou : 3

d= float("31a")

agora caso fosse apenas numeros


Quantos quilometros vc rodou : 31
Quantos litros utilizou : 3


d = float(31)

d viraria 31.0

Entenda a variavel f do mesmo modo caso vc passe algum valor que não
seja uma digito.




só uma DICA , vc pode tirar a variavel d fazendo

c = float(raw_input('Quantos km você rodou? '))

seria a mesma coisa de

c = float(c)

ou até mesmo de
d = float(c)
mas vc teria uma variavel a mais


O detalhe que não vi é que ta dando erro pq except tem break quando o certo é continue pra ele voltar pro inico do laço e perguntar novamente.
Agora ele entra no else pq o erro é que não pode transformar uma string em um numero.

Agora siim :D


Qui Mar 12, 2009 10:19 pm
Perfil E-mail

Data de registro: Qui Mar 12, 2009 2:33 pm
Mensagens: 6
Mensagem Re: Duvidas
Caro Rodrigo, obg por responder. Veja só, eu entendi quando vc disse que a função float não pode transformar uma string num número, mas veja, se isso acontecer, o certo seria o 'Try' tentar converter a entrada do usuário em 'Float' e não conseguindo ele caminharia para o except e já que nenhum dos 'If' ou 'elif' tem a condição do erro, ele deveria ir para a última condição do except (o Else), daí ele daria a mensagem: "Isso não parece um número válido...", é isso que não entendo. Será que o 'Break' da linha 18 está errado? pense num programinha que eu tô arrancando os cabelos :shock:


Qui Mar 12, 2009 11:40 pm
Perfil E-mail

Data de registro: Ter Dez 16, 2008 11:15 pm
Mensagens: 15
Mensagem Re: Duvidas
Gustavo , mais uma vez vc está ceerto porem ele só entra no else se
ele testar todos os if's como disse ele dá erro no d ou no f depende de qual
vc passou uma string ceerto então pra python essas variaveis não existem
pq ele dá erro aqui (*)

d = float(c)*
f = float(e) *

o interpretador nem chega a conhecer que existe d ou f ele pula logo pra o except
chegando no terceiro e quarto if tem o seguinte :

elif d == 0:
break
elif f == 0:
break

como disse python vai verificar se d == 0 ou/e f == 0 mas quem é 'd' e quem é 'f'
ele não conhece pq deu erro * antes de d ou f receber os seus respectivos float()'s

tente algo como :

Código:
# -*- coding: utf-8 -*-
# testinho.py - Cálculo de km/l de um veículo

print '-' * 40                                       
print 'Cálculo da relação km/l de um veículo '
print '-' * 40
print
print '(Para encerrar o programa apenas digite ENTER)'
print
while 1:
    try:
        c = raw_input('Quantos km você rodou? ')
        e = raw_input('Quantos litros você utilizou? ')
        d = float(c)
        f = float(e)
        g = d/f
        print 'Seu consumo foi de: %.2f km/l.' % g
        break     
    except:
        if len(c) == 0:
            break
        elif len(e) == 0:
            break
      #  elif d == 0:
      #      break
      #  elif f == 0:
      #      break
        elif ',' in c or ',' in e:
            print 'Use o ponto . (ponto) como separador decimal e recomece.'
        else:
            print 'Isso não parece um número válido. Recomece digitando um número válido.'

if g <= 5: print 'Consumo EXTREMAMENTE exagerado, faça uma revisão urgente.'
elif 5 < g <= 6: print 'Consumo exagerado, tente aliviar o pé‚ no acelerador.'
elif 6 < g < 7: print 'Consumo mediano, bom de melhorar.'
elif g >= 7: print 'Seu carro consome muito pouco, qual o modelo heim??? :)'
print '-' * 15
print 'Fim do Programa'
print '-' * 15


Assim funcionaria pq ele não chega a testar as variaves que possivelmente não existe
mas sua logica não ficaria a mesma, creio.

vou tentar organiza-lo agora e postar um parecido com o seu mas o erro espero que tenha
entendido.


Sex Mar 13, 2009 12:15 am
Perfil E-mail

Data de registro: Ter Dez 16, 2008 11:15 pm
Mensagens: 15
---------
Mensagem Re: Duvidas
tenta enteder mudei algumas coisas ...
se houver algum erro me avisa não testei o bastante

Código:
# -*- coding: utf-8 -*-
# testinho.py - Cálculo de km/l de um veículo

print '-' * 40                                       
print 'Cálculo da relação km/l de um veículo '
print '-' * 40
print
print '(Para encerrar o programa apenas digite enter)'
print
while 1:
    try:
        c = raw_input('Quantos km você rodou? ')
        e = raw_input('Quantos litros você utilizou? ')

        if((len(c) or len(e))== 0 or (float(c) or float(e))<0):
            break

        #depois de testar se os numeros são possiveis no nosso universo
        #de km e litros ou seja diferente de "" e maior que zero eu
        #trasnformo pra float
       
        c = float(c)
        e  = float(e)
   
        g = c/e
       
        print ('Seu consumo foi de: %.2f km/l.' % g )

        if g == 0:
            # partindo que km = 0 e g != 0
            print ("Seu carro está com problema, gastou combustivel sem se locomover")
        elif  0 < g <= 5:
            print ('Consumo EXTREMAMENTE exagerado, faça uma revisão urgente.')
        elif 5 < g <= 6:
            print ('Consumo exagerado, tente aliviar o pé‚ no acelerador.')
        elif 6 < g < 7:
            print ('Consumo mediano, bom de melhorar.')
        elif g >= 7:
            print ('Seu carro consome muito pouco, qual o modelo heim??? :')
           
       
    except:
        if e == 0:
            print ("Creio que seu carro não seja tão economico (i.e. divisão por zero)")
            continue
        elif ',' in c or ',' in e:
            print 'Use o ponto . (ponto) como separador decimal e recomece.'
            continue
        else:
            print 'Isso não parece um número válido. Recomece digitando um número válido.'
            continue
       
print '-' * 15
print 'Fim do Programa'
print '-' * 15



rodrigoclira AT yahoo.com.br


Sex Mar 13, 2009 12:40 am
Perfil E-mail
Mostrar mensagens anteriores:  Organizar por  
Criar novo tópico Responder Tópico  [ 15 Mensagens ]  Ir para a página 1, 2  Próximo


Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 0 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:
Ir para:  
cron

Forum Gratis · phpBB© · Internationalization Project · Reportar abuso · Termos De Uso/Política De Privacidade
© Forums-Free.com 2009