I'm doing Learn Python the Hard Way exercise 35. Below is the original code, and we're asked to change it so it can accept numbers that don't have just 0 and 1 in them.
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!") This is my solution, which runs fine and recognizes float values:
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!") Searching through similar questions, I found some answers that helped me write another solution, shown in the below code. The problem is, using isdigit() doesn't let the user put in a float value. So if the user said they want to take 50.5%, it would tell them to learn how to type a number. It works otherwise for integers. How can I get around this?
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()
nextas a variable name. That is a function in Python.