| Autor |
Mensagem |
|
Rodrigo Cesar
Data de registro: Ter Dez 16, 2008 11:15 pm Mensagens: 15
|
 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 |
|
 |
|
Rodrigo Cesar
Data de registro: Ter Dez 16, 2008 11:15 pm Mensagens: 15
|
 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 |
|
 |
|
infog
Site Admin
Data de registro: Sex Nov 21, 2008 11:45 pm Mensagens: 22 Localização: Cubatão - SP - Brasil
|
 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 |
|
 |
|
Gustavo Polo
Data de registro: Qui Mar 12, 2009 2:33 pm Mensagens: 6
|
 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! 
|
| Qui Mar 12, 2009 2:43 pm |
|
 |
|
Rodrigo Cesar
Data de registro: Ter Dez 16, 2008 11:15 pm Mensagens: 15
|
 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 boa sorte caso não resolva posta denovo .
|
| Qui Mar 12, 2009 4:07 pm |
|
 |
|
Gustavo Polo
Data de registro: Qui Mar 12, 2009 2:33 pm Mensagens: 6
|
 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 |
|
 |
|
Rodrigo Cesar
Data de registro: Ter Dez 16, 2008 11:15 pm Mensagens: 15
|
 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 
|
| Qui Mar 12, 2009 10:19 pm |
|
 |
|
Gustavo Polo
Data de registro: Qui Mar 12, 2009 2:33 pm Mensagens: 6
|
 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 
|
| Qui Mar 12, 2009 11:40 pm |
|
 |
|
Rodrigo Cesar
Data de registro: Ter Dez 16, 2008 11:15 pm Mensagens: 15
|
 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 |
|
 |
|
Rodrigo Cesar
Data de registro: Ter Dez 16, 2008 11:15 pm Mensagens: 15 ---------
|
 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 |
|
|