Scott W Dunning wrote: > I am trying to write a script for class for a game called guess the > number. I’m almost done but, I’m having a hard time getting the hints to > print correctly. I’ve tried ‘if’’ ‘elif’ nested, it seems like > everything….I’m posting my code for the hints below, any help is greatly > appreciated! > > def print_hints(secret, guess): > if guess < 1 or guess > 101: > print > print "Out of range!" > print > if guess < secret: > print > print "Too low!" > elif guess < (secret - 10) or guess > (secret - 10): > print "You are cold!" > print > print "Please play again!" > elif guess < (secret - 5) or guess > (secret - 5): > print "You are warmer!" > print > else: > print "You're on fire!!" > > if guess > secret: > print > print "Too high!" > print > elif guess < (secret - 10) or guess > (secret - 10): > print "You are cold!" > print > elif guess < (secret - 5)or guess > (secret - 5): > print "You are warmer!" > print > print "Please play again!" > else: > print "You're on fire!!"
You are trying too much at once. Start with a simple def get_high_low_hints(secret, guess): # buggy; I trust that you can fix it yourself. if guess < secret: return "too high" elif guess > secret: return "too low" else: assert secret == guess return "correct" You can then write simple tests like assert get_high_low_hints(secret=99, guess=99) == "correct" assert get_high_low_hints(secret=50, guess=51) == "too high" assert get_high_low_hints(secret=7, guess=6) == "too low" (which will fail btw, I added a bug to demonstrate the power of this approach) or have a look at the unittest module if you are ambitious. Once you have fixed the bugs in get_high_low_hints() you can take the next step def get_close_far_hints(secret, guess): ... # your code; have a look at the abs() function assert get_close_far_hints(50, 0) == "cold" assert get_close_far_hints(50, 90) == "cold" assert get_close_far_hints(50, 59) == "warm" assert get_close_far_hints(50, 41) == "warm" ... # similar tests for "hot"/"on fire" In short: break you problem in small sub-problems that you can easily test. It may look like it is more work at first, but you are more likely to reach a robust working result soon. Note that my functions do not print anything. This is be because functions that don't print are much easier to test: assert function_that_returns_something() == expected_result versus start_capturing_stdout() function_that_prints_something() stop_capturing_stdout() assert get_captured_stdout() == expected_result _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor