Duvida de inciante while + bool

22 views
Skip to first unread message

marcos wilson moraes dian

unread,
Mar 5, 2016, 4:27:02 AM3/5/16
to Python Brasil
Boa noite amigos
Estou fazendo o curso ignorancia zero/youtube e estou curtindo muito.Na aula 36 ha um exercicio que simula a contabilidade de um banco
Bem, vou direto ao assunto

Print('Banco Dian S\A')
Contas = ()
Depositos = ()
Escolha = bool(input('criar conta=1 ou sair=0'))
Def start():
Num_conta = int(input('digite numero da sua c\c: '))
While escolha:
Print('numero de c\c já existe')
Num_conta = int(input('digite numero da sua c\c: '))
etc...

Start() # la no fim do programa

"""
O codigo é bem mais extenso, mas a duvida ta aqui
mesmo digitando 0, o programa reinicia pedindo numero da c\c
Por que boolean nao retorna False?
"""
Tem la o gabarito, maas eu queria aprender
Agradeco desde ja, abraco

Gutierri Barboza

unread,
Mar 5, 2016, 5:07:35 AM3/5/16
to python...@googlegroups.com, Python Brasil
Ops... Desculpa, mensagem foi enviada sem querer...

Mas enfim, o input converte o valor em uma string, para você conseguir fazer com que o loop entenda False é necessário converter em um inteiro. Pode fazer igual você fez na variável Num_escolha int(input())
On Mar 5 2016, at 7:01 am, Gutierri Barboza <eugut...@gmail.com> wrote:
Eai Marcos, tranquilo?

Então cara, quando tu digita 0 o input entede que o valor é do tipo string. Na hora que seu loop pega o valor ele não entende como um número, pois é uma string.

No console do python, você pode testar fazendo:

valor = input('Digite 

--
--
------------------------------------
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ê está recebendo esta mensagem porque se inscreveu 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 obter mais opções, acesse https://groups.google.com/d/optout.

Renzo Nuccitelli

unread,
Mar 5, 2016, 9:23:11 AM3/5/16
to python...@googlegroups.com
Na realidade vc tem que verificar qual versão do Python está sendo usada. Se for a 2, veja o resultado:

Python 2.7.10 (default, Jun 10 2015, 19:42:47)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> i=input()
0
>>> type(i)
<type 'int'>

Ou seja, input retorna inteiro no Python 2. Já no 3:

Renzos-MacBook-Pro:/ renzo$ python3
Python 3.4.3 (default, Jun 10 2015, 19:56:14)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> type(input())
0
<class 'str'>

Ou seja, ele retorna o sempre uma string. Em Python 2 vc pode usar o raw_input se quiser também sempre receber uma string. Antes de iniciar qualquer projeto ou aula, sempre pergunte qual versão do Python será utilizada.


Finalizando a explicação vem a parte da avaliação de expressões. Sequencias vazias avaliam para falso. Já se possuirem algum elemento, avaliam para verdadeiro. Assim:

>>> bool('')
False
>>> bool('0')
True
>>> bool('1')


Ou seja, '0' avaliará para verdadeiro e por isso o programa nunca termina a execução. Já para numeros 0 avalia para falso e qualquer outro valor para verdadeiro:

>>> bool(0)
False
>>> bool(1)
True
>>> bool(-1)
True

Aproveitando o ensejo, também temos vários cursos interessantes no Python Pro: https://adm.python.pro.br/ ;)

Grande abraço,


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.


Reply all
Reply to author
Forward
0 new messages