Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialLia Gaetano
2,619 PointsHi! I'm having two runtime errors: 1. game() is not counting/limiting guesses 2. .format doesn't return error value.
Here is code:
import random
def game():
# generate random number between 1 and 10
secret_num = random.randint(1, 10)
guesses = []
#limit the number of guesses
while len(guesses) < 3:
######## isn't incrementing?
try:
# get number from player
guess = int(input("Guess a number between 1 and 10: "))
except ValueError:
print("{} is not a number!".format(guess))
######## above returns last int input, but not the wrong input i.e. "cat"
else:
# compare guess to secret number
# print hit/miss
if guess == secret_num:
print("You're right!! My number was {}".format(secret_num))
break
elif guess > secret_num:
print("Too high")
continue
elif guess < secret_num:
print("Too low")
continue
guesses.append(guess)
else:
print("You lost. My number was {}.".format(secret_num))
play_again = input("Do you want to play again? Y/n ")
if play_again.lower() != "n":
game()
else:
print("Bye")
game()
1 Answer
Andreas cormack
Python Web Development Techdegree Graduate 33,011 PointsHi Lia
Remove continue from your while loop and it should work. The if statement checking if the entered number is to high or low is causing the loop to start at the very beginning every time, this intern causes the list guesses not to get appended with the guess. Also check your indentation for the else statement that deals with the scenario when the list is greater than 2.
import random
def game():
# generate random number between 1 and 10
secret_num = random.randint(1, 10)
guesses = []
#limit the number of guesses
while len(guesses) < 3:
######## isn't incrementing?
try:
# get number from player
guess = int(input("Guess a number between 1 and 10: "))
except ValueError:
print("This is not a number!") #the reason you get an error here is because the variable guess
#never gets assigned due to the value error. My solution is not to assign a variable but instead point out its not a
# a number. This is a bug
######## above returns last int input, but not the wrong input i.e. "cat"
else:
# compare guess to secret number
# print hit/miss
if guess == secret_num:
print("You're right!! My number was {}".format(secret_num))
break
elif guess > secret_num:
print("Too high")
elif guess < secret_num:
print("Too low")
guesses.append(guess)
else:
print("You lost. My number was {}.".format(secret_num))
play_again = input("Do you want to play again? Y/n ")
if play_again.lower() != "n":
game()
else:
print("Bye")
game()
hope that helps