Divergência nas versões

classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Divergência nas versões

Denis Costa-2
Tenho que entregar uma lista de exercícios na faculdade, na matéria de
algoritmo. Nada muito complicado.

Mas me deparei com a seguinte situação, ao executar esse exercício
http://pastebin.com/aRYeBecS acontece isso:

$ python3.1 p.py
Lado1: 7
Lado2: 8
Lado3: 9
Não é triangulo!

$ python p.py
Lado1: 7
Lado2: 8
Lado3: 9
Triangulo escaleno!

$ python --version
Python 2.6.6

$ python3.1 --version
Python 3.1.2


Não conheço muito da sintaxe do Python 3, O que há de errado no código,
baseado na nova sintaxe?

--
Denis Silva Costa
Ubuntu User: #31758
Linux User: #516577
"A paz não brota em um jardim com câmera e sensores..."


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Divergência nas versões

Rodolfo S. Carvalho
sua dúvida é resolvível com help(input) nas duas versões:

no Python 2.6:

>>> help(input)
Help on built-in function input in module __builtin__:

input(...)
    input([prompt]) -> value

    Equivalent to eval(raw_input(prompt)).

------------------------------------------------------

No Python 3.1:
>>> help(input)
input(...)
    input([prompt]) -> string

    Read a string from standard input.  The trailing newline is stripped.
    If the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise
EOFError.
    On Unix, GNU readline is used if enabled.  The prompt string, if given,
    is printed without a trailing newline before reading.


a função input() do python 3 faz o mesmo que o raw_input() no python 2.x .
Na verdade, raw_input() foi renomeado para input() no python 3, e  input()
do python 2.x foi abandonada, exatamente pelos riscos de se fazer eval() de
uma string data pelo usuário. você pode reproduzir o input() do python 2.x
no python 3 assim:

entrada = eval(input("..."))

Mas como já sabemos, fazer eval() com entrada recebida pelo usuário pode ser
extremamente perigoso.
O mais saudável, pra manter a portabilidade em ambas as versões do python,
deve ser: http://pastebin.com/GGqBTwgY

2011/2/20 Denis Costa <[hidden email]>

>
>
> Tenho que entregar uma lista de exercícios na faculdade, na matéria de
> algoritmo. Nada muito complicado.
>
> Mas me deparei com a seguinte situação, ao executar esse exercício
> http://pastebin.com/aRYeBecS acontece isso:
>
> $ python3.1 p.py
> Lado1: 7
> Lado2: 8
> Lado3: 9
> Não é triangulo!
>
> $ python p.py
> Lado1: 7
> Lado2: 8
> Lado3: 9
> Triangulo escaleno!
>
> $ python --version
> Python 2.6.6
>
> $ python3.1 --version
> Python 3.1.2
>
> Não conheço muito da sintaxe do Python 3, O que há de errado no código,
> baseado na nova sintaxe?
>
> --
> Denis Silva Costa
> Ubuntu User: #31758
> Linux User: #516577
> "A paz não brota em um jardim com câmera e sensores..."
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



--
    Rodolfo Carvalho
     Web Developer
[hidden email]


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Divergência nas versões

Marco André Lopes Mendes
In reply to this post by Denis Costa-2
Verifique os tipos de a, b e c. No Python 2.x, input lê um inteiro e no
python 3.x lê uma string. use int(input(variavel)) que deve resolver.

[]s

Marco André

2011/2/20 Denis Costa <[hidden email]>

> Tenho que entregar uma lista de exercícios na faculdade, na matéria de
> algoritmo. Nada muito complicado.
>
> Mas me deparei com a seguinte situação, ao executar esse exercício
> http://pastebin.com/aRYeBecS acontece isso:
>
> $ python3.1 p.py
> Lado1: 7
> Lado2: 8
> Lado3: 9
> Não é triangulo!
>
> $ python p.py
> Lado1: 7
> Lado2: 8
> Lado3: 9
> Triangulo escaleno!
>
> $ python --version
> Python 2.6.6
>
> $ python3.1 --version
> Python 3.1.2
>
>
> Não conheço muito da sintaxe do Python 3, O que há de errado no código,
> baseado na nova sintaxe?
>
> --
> Denis Silva Costa
> Ubuntu User: #31758
> Linux User: #516577
> "A paz não brota em um jardim com câmera e sensores..."
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ------------------------------------
>
> Python-Brasil
> http://www.python.org.br/wiki/AntesDePerguntar
> Links do Yahoo! Grupos
>
>
>


--
Marco André
[hidden email]
http://www.google.com.br/profiles/marcoandre


[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Divergência nas versões

Pedro Matiello
In reply to this post by Denis Costa-2
O erro está na leitura dos dados. No Python2.x, os números digitados são
automaticamente convertidos para int (e os ifs realizam comparações entre
ints, portanto). No Python3, a conversão é feita e as variáveis guardando as
entradas (a, b, c) são do tipo str (e os ifs realizam comparações entre
strings, portanto).

Para ter o comportamento desejado no Python 3, basta trocar as linhas:

a = input("Lado1: ")
b = input("Lado2: ")
c = input("Lado3: ")

por:

a = int(input("Lado1: "))
b = int(input("Lado2: "))
c = int(input("Lado3: "))



[As partes desta mensagem que não continham texto foram removidas]

Reply | Threaded
Open this post in threaded view
|

Re: Divergência nas versões

Denis Costa-2
Muito obrigado a todos pelas explicações!!!!!!!

Em 20 de fevereiro de 2011 09:35, Pedro Matiello <[hidden email]>escreveu:

>
>
> O erro está na leitura dos dados. No Python2.x, os números digitados são
> automaticamente convertidos para int (e os ifs realizam comparações entre
> ints, portanto). No Python3, a conversão é feita e as variáveis guardando
> as
> entradas (a, b, c) são do tipo str (e os ifs realizam comparações entre
> strings, portanto).
>
> Para ter o comportamento desejado no Python 3, basta trocar as linhas:
>
> a = input("Lado1: ")
> b = input("Lado2: ")
> c = input("Lado3: ")
>
> por:
>
> a = int(input("Lado1: "))
> b = int(input("Lado2: "))
> c = int(input("Lado3: "))
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>



--
Denis Silva Costa
Ubuntu User: #31758
Linux User: #516577
"A paz não brota em um jardim com câmera e sensores..."


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
    [hidden email]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html