9

Im a middle school student, and im starting to learn coding in python. I have been watching video tutorials, but i cant seem to figure out how to make the game quit if you type q. here what i have..

print('How old do you thing Fred the Chicken is?')
number = 17

Quit = q
run = 17
while run:

guess = int(input('Enter What You Think His Age Is....'))

print('How old do you thing Fred the Chicken is?')
number = 17

Quit = 'q'
run = 17
while run:

guess = int(input('Enter What You Think His Age Is....'))

if guess == number:
    print('Yes :D That is his age...')
    run = False
elif guess < number:
    print('No, Guess a little higher...')
elif guess > number:
    print('No, Guess a little lower....')

print('Game Over')
print('Press Q to Quit')

if run == False:
choice = input('Press Q to Quit')
if choice == 'q'
import sys
exit(0)
user1766994
  • 91
  • 1
  • 1
  • 3
  • if you want, you could do `number = random.randint(0,10)` so it won't always be set to 17 every game. just remember to add `import random` at the top of your file. read more [here](http://docs.python.org/library/random.html#random.randint) – jb. Oct 23 '12 at 04:11

3 Answers3

14

Getting Q as input

Quit = int(input('Press Q to Quit')

You're asking for Q as the input, but only accepting an int. So take off the int part:

Quit = input('Press Q to Quit')

Now Quit will be whatever the user typed in, so let's check for "Q" instead of True:

if Quit == "Q":

Instead of sys.exit(0), you can probably just end your while look with break or just return if you're in a function.

Also, I don't recommend the name "Quit" for a variable that just stores user input, since it will end up confusing.

And remember that indentation is important in Python, so it needs to be:

if run == False:
    choice = input('Press Q to Quit')
    if choice == "Q":
        # break or return or..
        import sys
        sys.exit(0)

That may just be a copy/paste error though.

Indentation and Syntax

I fixed the indentation and removed some extraneous code (since you duplicate the outer loop and some of the print statements) and got this:

print('How old do you thing Fred the Chicken is?')
number = 17

run = True
while run:

    guess = int(input('Enter What You Think His Age Is....t'))

    if guess == number:
        print('Yes :D That is his age...')
        run = False
    elif guess < number:
        print('No, Guess a little higher...')
    elif guess > number:
        print('No, Guess a little lower....')

    if run == False:
        print('Game Over')
        choice = input('Press Q to Quit')
        if choice == 'q'
            break

This gave me a syntax error:

blong@ubuntu:~$ python3 chicken.py
File "chicken.py", line 23
if choice == 'q'
^
SyntaxError: invalid syntax

So Python is saying there's something wrong after the if statement. If you look at the other if statements, you'll notice that this one is missing the : at the end, so change it to:

if choice == 'q':

So with that change the program runs, and seems to do what you want.

Some suggestions

  • Your instructions say "Press Q to Quit", but you actually only accept "q" to quit. You may want to accept both. Python has an operator called or, which takes two truth values (True or False) and returns True if either of them is True (it actually does more than this with values besides True and False, see the documentation if you're interested).

    Examples:

    >> True or True
    True
    >>> True or False
    True
    >>> False or True
    True
    >>> False or False
    False
    

    So we can ask for Q or q with if choice == "Q" or choice == "q":.

    Another option is to convert the string to lower case and only check for q, using if choice.lower() == "q":. If choice was Q, it would first convert it to q (with the .lower()), then do the comparison.

  • Your number is always 17. Python has a function called random.randint() that will give you a random number, which might make the game more fun. For example, this would make the chicken's age between 5 and 20 (inclusive):

    number = random.randint(5, 20)
    
Brendan Long
  • 53,280
  • 21
  • 146
  • 188
  • hmm..... I tried it like 5 different ways and it came out with an invalid syntax... there must be some spacing error... thank you for your help. Could you check my current code? ill edit my current post so you can see the fixes... – user1766994 Oct 23 '12 at 11:10
  • @user1766994 Your current post isn't indented correctly. You need to indent by four spaces after each `while:` or `if:` (also `class` and `def`). Please update it with correct indentation, and also include the entire error message. Remember, **in Python indentation matters**. – Brendan Long Oct 23 '12 at 14:45
1

There are many ways to exit certain things. For loops, it is using break, and for functions you can use return. However, for programs, if you wish to exit your program before interpretation finishes (end of the script) there are two different types of exit() functions. There is sys.exit() which is part of the sys module, and there is exit() and quit() which is a built-in. However, sys.exit() is intended for programs not in IDLE (python interactive), while the built-in exit() and quit() functions are intended for use in IDLE.

IT Ninja
  • 6,174
  • 10
  • 42
  • 65
1

You can use the break statement to break out of a while loop:

while True:
    guess = int(input("...")

    # ...rest of your game's logic...

    # Allow breaking out of the loop
    choice = input("Enter Q to quit, or press return to continue")
    if choice.lower() == "q":
        break

That means the interpreter exits the while loop, continues looking for more commands to run, but reaches the end of the file! Python will then exit automatically - there's no need to call sys.exit

(as an aside, you should rarely use sys.exit, it's really just used to set non-zero exit-status, not for controlling how your program works, like escaping from a while loop)

Finally, the main problem with the code you posted is indentation - you need to put the appropriate number of spaces at the start of each line - where you have something like:

if run == False:
choice = input('Press Q to Quit')

It must be like this:

if run == False:
    choice = input('Press Q to Quit')

Same with anything like while, for, if and so on.

dbr
  • 165,801
  • 69
  • 278
  • 343