Heur 0 Denunciar post Postado Março 30, 2010 Olá pessoal. Estou com problemas com este codigo. Quem me conhece sabe que estou iniciando em python e sou o super noob na linguagem. Bem, vamos ao codigo: def soma(a, b ): return a+b a = 1 cont = 0 quest = "" valida = 0 while a == 1: try: x = int(input("Digite um numero: ")) y = int(input("Digite um outro numero: ")) print("O resultado é "+str(soma(x,y))+".") valida = 1 if (valida == 1): quest = int(input("Deseja calcular novamente? ")) if (quest == 'S') or (quest == 's'): a = 1 cont += 1 elif (quest == 'N') or (quest == 'n'): a = 0 else: print("Entrada invalida.") valida = 1 except: print("Parametros incorretos.") valida = 0 a = 1 print("Voce calculou "+str(cont)+" vezes.") Claro, coloquei todas as identações certinho. Estou tentando fazer um programinha, como vêem, simples. Apenas para calcular uma soma <_< Coloquei tratamentos, pois odeio os erros que o IDLE retorna. Então, ele tá dando parametro incorreto, de acordo com minha exceção. Mas ele devia validar com o if, o s de sim. E não tá acontecendo isso. Alguem sabe onde está o erro? Se souberem me digam, que realmente fiquei encucado com isso aí. Abraço amigos. ^_^ Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Março 30, 2010 Bom n entendo de python + acho q o problema deve ser as chaves do if (bom acho neh kk), tente assim: if ((quest == 'S') or (quest == 's')): []s Compartilhar este post Link para o post Compartilhar em outros sites
Heur 0 Denunciar post Postado Março 30, 2010 É, poderia ser isso derrepente. Mas não resolveu. Continuo com o mesmo problema. http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 30, 2010 Usando o Pdb dá p/ perceber o que acontece na execução do programa: (Pdb) c Digite um numero: 4 Digite um outro numero: 2 O resultado é 6. > /home/isis/src/imasters/p1.py(17)<module>() -> if (valida == 1): (Pdb) p valida 1 (Pdb) s > /home/isis/src/imasters/p1.py(18)<module>() -> quest = input("Deseja calcular novamente? ") (Pdb) c Deseja calcular novamente? n > /home/isis/src/imasters/p1.py(28)<module>() -> except: (Pdb) p quest '' No shell interativo: >>> q = input('teste:')teste:123 >>> q 123 >>> q = input('teste:') teste:abc Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<string>", line 1, in <module> NameError: name 'abc' is not defined Ou seja, input funciona p/ números, mas p/ leitura de string, dá errado. O que você tem que usar é o raw_input. Detalhe: isso no python 2.6, porque no python 3, o input funciona normalmente p/ leitura de strings. Compartilhar este post Link para o post Compartilhar em outros sites
Heur 0 Denunciar post Postado Março 30, 2010 Nooossa. Como não vi essa. Poxa hein? :mellow: É fato, no 3 funciona (de certo misturei tudo :lol: ) Muuuuiitissimo obrigado http://forum.imasters.com.br/public/style_emoticons/default/clap.gif Então, já que estamos no embalo, porque o python possui 2 versões? a atual 2.6.5 e a 3.1.2? Qual a diferença entre elas? (Uma das diferenças, óbvio, é o que acabamos de resolver ^_^ ) Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 30, 2010 Várias. O operador de divisão também é uma delas. 2.6: 3/4 = 0. 3.x: 3/4 = 0.75 A função print, no 2.6 termina a string com um '\n'. No 3.x, você pode especificar uma string/caractere p/ ficar no lugar do '\n': print('teste', end='#'). Se eu não me engano, também dá p/ especificar um argumento sep. Tipos de retorno de métodos foram modificados. Não existe mais o xrange(). Agora é só range(). Criaram dict comprehension. Alteraram a sintaxe de except exc,var p/ except exc as var Alteraram um detalhe na list comprehension. [... for var in item1, item2, ...] => [.. for var in (item1,item2,...) ] Alteraram também o modo de passar tuplas em funções. def foo(a, (b,c)) => def foo(a, b_c) Removeram módulos e limparam outros. É mais fácil ficar de olho nos PEPs : http://docs.python.org/release/3.0.1/whatsnew/3.0.html E eu agradeço por fazerem isso ao invés de esperarem acumular um monte coisa por manter a compatibilidade e acrescentar remendos. Depois a linguagem vira uma tralha velha e ninguém mais mexe. Compartilhar este post Link para o post Compartilhar em outros sites
Heur 0 Denunciar post Postado Março 30, 2010 Aaahn. Diferenças significativas de fato. E é uma ótima idéia como você mesmo disse. Uma coisa que notei no 3.x que não tem no 2.x é um módulo chamado "turtle" Ele é um apresentação grafica, e acho que isso quer dizer que as aplicações graficas são mais favorecidas no 3.x. Achei o 3.x mais limpo, se é que se pode dizer assim. ^_^ Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Março 31, 2010 O turtle faz parte do Tk e é esse o toolkit 'padrão' do python. http://docs.python.org/library/turtle.html Se não existe p/ você é porque você não instalou o python-tk. Compartilhar este post Link para o post Compartilhar em outros sites
Heur 0 Denunciar post Postado Março 31, 2010 Eh, realmenteeu não havia instalado. http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif Então, o turtle é o módulo grafico do Tk?? É isso mesmo? Mas sério mesmo. Reinstalei ele, e nada do Tk. Na instalação selecionei o Tk e vi, ele tá sendo instalado. Compartilhar este post Link para o post Compartilhar em outros sites