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()

questionAnswers(5)

yourAnswerToTheQuestion