Como verificar se uma entrada do usuário é flutuante
Estou fazendo o exercício Aprenda Python da maneira mais difícil 35. Abaixo está o código original e pedimos para alterá-lo para que ele possa aceitar números que não possuem apenas 0 e 1.
def gold_room():
print "This room is full of gold. How much do you take?"
next = raw_input("> ")
if "0" in next or "1" in next:
how_much = int(next)
else:
dead("Man, learn to type a number.")
if how_much < 50:
print "Nice, you're not greedy, you win!"
exit(0)
else:
dead("You greedy bastard!")
Esta é a minha solução, que funciona bem e reconhece valores flutuantes:
def gold_room():
print "This room is full of gold. What percent of it do you take?"
next = raw_input("> ")
try:
how_much = float(next)
except ValueError:
print "Man, learn to type a number."
gold_room()
if how_much <= 50:
print "Nice, you're not greedy, you win!"
exit(0)
else:
dead("You greedy bastard!")
Pesquisando em perguntas semelhantes, encontrei algumas respostas que me ajudaram a escrever outra solução, mostrada no código abaixo. O problema é que o uso de isdigit () não permite que o usuário coloque um valor flutuante. Portanto, se o usuário disser que deseja receber 50,5%, ele instrui-o a aprender a digitar um número. Funciona de outra forma para números inteiros. Como posso resolver isso?
def gold_room():
print "This room is full of gold. What percent of it do you take?"
next = raw_input("> ")
while True:
if next.isdigit():
how_much = float(next)
if how_much <= 50:
print "Nice, you're not greedy, you win!"
exit(0)
else:
dead("You greedy bastard!")
else:
print "Man, learn to type a number."
gold_room()