Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Heur

[Resolvido] Problema com Código

Recommended Posts

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

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

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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.