Função - Erro Loop Infinito

62 views
Skip to first unread message

Rennan Valadares

unread,
Sep 12, 2017, 10:41:04 AM9/12/17
to Python Brasil
def preço(num):

    while isinstance(num, numbers.Real) == False:
        print('Valor de Compra Pago ao Produtor Inválido.')
        num = input('Qual o preço de compra liquido pago ao produtor ?')

Bom dia, alguém sabe me dizer porque mesmo entrando com um valor inteiro ou float esse código está caindo em loop infinito ? Já bati cabeça, sei que é um código simples mas não estou conseguindo resolver. Agradeço desde já.

Pra complementar e explicar o que eu preciso: Preciso checar se num é um número real, e se não for preciso que retorne um erro e peça para digitar novamente o número. Caso tenha uma forma mais fácil de fazer melhor ainda ! Eu estava usando uma exceção, mas estou tentando codificar esta parte sem ser por exceção é possível ? 

Renzo Nuccitelli

unread,
Sep 12, 2017, 10:50:04 AM9/12/17
to Python Brasil
Input no Python 3 traz sempre uma string. Por isso do loop infinito. Se quer numero, faça uma transformação como int(input()) ou float(input()).

--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@googlegroups.com

---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasi...@googlegroups.com.
Para mais opções, acesse https://groups.google.com/d/optout.
--
Renzo Nuccitelli

Eu leio email somente uma vez por dia. Se o assunto for urgente, me ligue.


Renzo Nuccitelli

unread,
Sep 12, 2017, 10:52:07 AM9/12/17
to Python Brasil
Em tempo, pra esse tipo de duvida, sempre use o console interativo para tirar duvidas:

>>> s=input('Preço: ')

Preço: 12.23

>>> s

'12.23'

>>> type(s)

<class 'str'>

>>> float(s)

12.23


Rafael Soares

unread,
Sep 12, 2017, 10:53:19 AM9/12/17
to python...@googlegroups.com

Rennan,

input te retorna uma string e isto não é um número real, é necessário converter o retorno do input antes de comparar.

--
Rafael Soares


--
--
------------------------------------
Grupo Python-Brasil
http://www.python.org.br/wiki/AntesDePerguntar
 
<*> Para visitar o site do grupo na web, acesse:
http://groups.google.com/group/python-brasil
 
<*> Para sair deste grupo, envie um e-mail para:


---
Você recebeu essa mensagem porque está inscrito no grupo "Python Brasil" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para python-brasil+unsubscribe@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages